diff options
author | Dario Vladović <d.vladimyr@gmail.com> | 2021-04-30 08:13:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-30 08:13:51 +0200 |
commit | d242d40db61ca225be834b0747adf3f91a81bd03 (patch) | |
tree | c0d8ed6baa5d36c102e3e384eb2eee077f12c401 | |
parent | 65cbd2093cdf6aa044ba1682c81ea2939c5544c9 (diff) |
feat(gcloud): honor `CLOUDSDK_CORE_PROJECT` env variable (#2596)
Co-authored-by: Filip Bachul <filip.b@masterborn.com>
-rw-r--r-- | src/modules/gcloud.rs | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/modules/gcloud.rs b/src/modules/gcloud.rs index 444cc7ebc..cb16a562f 100644 --- a/src/modules/gcloud.rs +++ b/src/modules/gcloud.rs @@ -128,7 +128,10 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { .unwrap_or(region) }) .map(Ok), - "project" => gcloud_context.get_project().map(Ok), + "project" => context + .get_env("CLOUDSDK_CORE_PROJECT") + .or_else(|| gcloud_context.get_project()) + .map(Ok), "active" => Some(Ok(gcloud_context.config_name.to_owned())), _ => None, }) @@ -303,6 +306,40 @@ project = abc } #[test] + fn project_set_in_env() -> io::Result<()> { + let dir = tempfile::tempdir()?; + let active_config_path = dir.path().join("active_config"); + let mut active_config_file = File::create(&active_config_path)?; + active_config_file.write_all(b"default")?; + + create_dir(dir.path().join("configurations"))?; + let config_default_path = dir.path().join("configurations").join("config_default"); + let mut config_default_file = File::create(&config_default_path)?; + config_default_file.write_all( + b"\ +[core] +project = abc +", + )?; + + let actual = ModuleRenderer::new("gcloud") + .env("CLOUDSDK_CORE_PROJECT", "env_project") + .env("CLOUDSDK_CONFIG", dir.path().to_string_lossy()) + .config(toml::toml! { + [gcloud] + format = "on [$symbol$project]($style) " + }) + .collect(); + let expected = Some(format!( + "on {} ", + Color::Blue.bold().paint("☁️ env_project") + )); + + assert_eq!(actual, expected); + dir.close() + } + + #[test] fn region_not_set_with_display_region() -> io::Result<()> { let dir = tempfile::tempdir()?; let actual = ModuleRenderer::new("gcloud") |