diff options
author | Thomas O'Donnell <andytom@users.noreply.github.com> | 2024-04-06 15:30:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-06 15:30:19 +0200 |
commit | e3b5dff3524608328de6ee3cbb390f8c640b0ce0 (patch) | |
tree | 4ea1171706c752bb4252e671b4b2a92527bae14e /src/modules | |
parent | 3e3f18ef277c9bb3db9f60c964f280c7d981102c (diff) |
feat(k8s): Add detect env vars option (#4488)
* feat(k8s): Add detect env vars option
Have added the option to trigger the k8s module based on what env vars
are set, this has been done in a backwards compatible way so if nothing
is changed from the defaults the module will still behave the same way
as before. This is similar to what I did in #4486 for the python module
and if goes well I'd like to rollout to other modules.
* Update src/modules/kubernetes.rs
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
* Update src/modules/kubernetes.rs
---------
Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/kubernetes.rs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/modules/kubernetes.rs b/src/modules/kubernetes.rs index ef6a4a1f1..09a4cef40 100644 --- a/src/modules/kubernetes.rs +++ b/src/modules/kubernetes.rs @@ -107,6 +107,8 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { return None; }; + let have_env_vars = context.detect_env_vars(&config.detect_env_vars); + // If we have some config for doing the directory scan then we use it but if we don't then we // assume we should treat it like the module is enabled to preserve backward compatibility. let have_scan_config = [ @@ -127,7 +129,7 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { }) }); - if !is_kube_project.unwrap_or(true) { + if !is_kube_project.unwrap_or(true) && !have_env_vars { return None; } @@ -320,7 +322,7 @@ users: [] } #[test] - fn test_none_when_no_detected_files_or_folders() -> io::Result<()> { + fn test_none_when_no_detected_files_folders_or_env_vars() -> io::Result<()> { let dir = tempfile::tempdir()?; let filename = dir.path().join("config"); @@ -352,6 +354,7 @@ users: [] detect_files = ["k8s.ext"] detect_extensions = ["k8s"] detect_folders = ["k8s_folder"] + detect_env_vars = ["k8s_env_var"] }) .collect(); @@ -361,7 +364,7 @@ users: [] } #[test] - fn test_with_detected_files_and_folder() -> io::Result<()> { + fn test_with_detected_files_folder_and_env_vars() -> io::Result<()> { let dir = tempfile::tempdir()?; let filename = dir.path().join("config"); @@ -429,6 +432,19 @@ users: [] }) .collect(); + let empty_dir = tempfile::tempdir()?; + + let actual_env_var = ModuleRenderer::new("kubernetes") + .path(empty_dir.path()) + .env("KUBECONFIG", filename.to_string_lossy().as_ref()) + .env("TEST_K8S_ENV", "foo") + .config(toml::toml! { + [kubernetes] + disabled = false + detect_env_vars = ["TEST_K8S_ENV"] + }) + .collect(); + let expected = Some(format!( "{} in ", Color::Cyan.bold().paint("☸ test_context") @@ -437,6 +453,7 @@ users: [] assert_eq!(expected, actual_file); assert_eq!(expected, actual_ext); assert_eq!(expected, actual_dir); + assert_eq!(expected, actual_env_var); dir.close() } |