Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

Commit

g1t-runner sandbox status warns about the desktop app's runner in local data too (#52): on Windows the desktop app keeps its runner under %LOCALAPPDATA%\sh.g1t.desktop\runner, and only a computer that set it up before keeps it under %APPDATA%, but the host-mode warning looked only in %APPDATA%, so a "Directly on this computer" runner in the current place went unmentioned. host_runner_folders now looks in both; macOS and Linux, where they are one folder, are unchanged.

Checked:
cargo test -p g1t-runner (259 + 5), with a test that both folders are looked at on Windows.
G1t-Session:
ses_01m4ynr1peevvs8zwaqakycv2e
syntaqxcommitted Parent85fcc09Browse files
1 file+20−60/1 viewed
+20−6
726726 if let Some(home) = &home {
727727 folders.push(home.join(".g1t-runner"));
728728 }
729− // The desktop app's data folder (its `app_data_dir`): runner/host.
730− let data = match std::env::consts::OS {
731− "windows" => std::env::var_os("APPDATA").map(PathBuf::from),
732− "macos" => home.as_ref().map(|h| h.join("Library").join("Application Support")),
733− _ => std::env::var_os("XDG_DATA_HOME").filter(|d| !d.is_empty()).map(PathBuf::from).or_else(|| home.as_ref().map(|h| h.join(".local").join("share"))),
729+ // The desktop app's data folders: runner/host. On Windows it keeps its
730+ // runner in local data (%LOCALAPPDATA%), and in roaming data
731+ // (%APPDATA%) on a computer that set it up there before; elsewhere the
732+ // two are one folder.
733+ let data: Vec<PathBuf> = match std::env::consts::OS {
734+ "windows" => ["LOCALAPPDATA", "APPDATA"].iter().filter_map(|var| std::env::var_os(var)).map(PathBuf::from).collect(),
735+ "macos" => home.iter().map(|h| h.join("Library").join("Application Support")).collect(),
736+ _ => std::env::var_os("XDG_DATA_HOME").filter(|d| !d.is_empty()).map(PathBuf::from).or_else(|| home.as_ref().map(|h| h.join(".local").join("share"))).into_iter().collect(),
734737 };
735− if let Some(data) = data {
738+ for data in data {
736739 folders.push(data.join("sh.g1t.desktop").join("runner").join("host"));
737740 }
738741 folders.dedup();
13481351 assert!(said.contains("as you") && said.contains("g1t-runner remove --dir"), "{said}");
13491352 // The desktop app's folder for running jobs directly is looked at.
13501353 assert!(host_runner_folders().iter().any(|f| f.ends_with(Path::new("sh.g1t.desktop").join("runner").join("host"))));
1354+ // On Windows, both where it keeps it now (local data) and where it
1355+ // kept it before (roaming data).
1356+ if cfg!(windows) {
1357+ let folders = host_runner_folders();
1358+ for var in ["LOCALAPPDATA", "APPDATA"] {
1359+ if let Some(data) = std::env::var_os(var) {
1360+ let expected = PathBuf::from(data).join("sh.g1t.desktop").join("runner").join("host");
1361+ assert!(folders.contains(&expected), "{var}: {folders:?}");
1362+ }
1363+ }
1364+ }
13511365 // An older status, without warnings, still reads.
13521366 let old: Status = serde_json::from_str(r#"{"schema":1,"state":"absent","backend":null,"runner_version":null,"launcher_version":"0.3.0","image_version":null,"isolation":null,"job":null,"error":null,"resources":{"cpus":0,"memory_mib":0,"disk_gib":0},"capabilities":[],"state_dir":"x"}"#).unwrap();
13531367 assert!(old.warnings.is_empty());

Comments

Sign in to comment.