diff options
Diffstat (limited to 'src/modules/terraform.rs')
-rw-r--r-- | src/modules/terraform.rs | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/modules/terraform.rs b/src/modules/terraform.rs index c051abb99..006c234f3 100644 --- a/src/modules/terraform.rs +++ b/src/modules/terraform.rs @@ -4,6 +4,7 @@ use crate::configs::terraform::TerraformConfig; use crate::formatter::StringFormatter; use crate::utils; +use crate::formatter::VersionFormatter; use std::io; use std::path::PathBuf; @@ -34,9 +35,16 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { _ => None, }) .map(|variable| match variable { - "version" => format_terraform_version( - &context.exec_cmd("terraform", &["version"])?.stdout.as_str(), - ) + "version" => { + let terraform_version = get_terraform_version( + &context.exec_cmd("terraform", &["version"])?.stdout.as_str(), + )?; + VersionFormatter::format_module_version( + module.get_name(), + &terraform_version, + config.version_format, + ) + } .map(Ok), "workspace" => get_terraform_workspace(context).map(Ok), _ => None, @@ -75,7 +83,7 @@ fn get_terraform_workspace(context: &Context) -> Option<String> { } } -fn format_terraform_version(version: &str) -> Option<String> { +fn get_terraform_version(version: &str) -> Option<String> { // `terraform version` output looks like this // Terraform v0.12.14 // With potential extra output if it detects you are not running the latest version @@ -85,6 +93,7 @@ fn format_terraform_version(version: &str) -> Option<String> { .next()? .trim_start_matches("Terraform ") .trim() + .trim_start_matches('v') .to_owned() + " ", ) @@ -99,44 +108,38 @@ mod tests { use std::io::{self, Write}; #[test] - fn test_format_terraform_version_release() { + fn test_get_terraform_version_release() { let input = "Terraform v0.12.14"; - assert_eq!( - format_terraform_version(input), - Some("v0.12.14 ".to_string()) - ); + assert_eq!(get_terraform_version(input), Some("0.12.14 ".to_string())); } #[test] - fn test_format_terraform_version_prerelease() { + fn test_get_terraform_version_prerelease() { let input = "Terraform v0.12.14-rc1"; assert_eq!( - format_terraform_version(input), - Some("v0.12.14-rc1 ".to_string()) + get_terraform_version(input), + Some("0.12.14-rc1 ".to_string()) ); } #[test] - fn test_format_terraform_version_development() { + fn test_get_terraform_version_development() { let input = "Terraform v0.12.14-dev (cca89f74)"; assert_eq!( - format_terraform_version(input), - Some("v0.12.14-dev (cca89f74) ".to_string()) + get_terraform_version(input), + Some("0.12.14-dev (cca89f74) ".to_string()) ); } #[test] - fn test_format_terraform_version_multiline() { + fn test_get_terraform_version_multiline() { let input = "Terraform v0.12.13 Your version of Terraform is out of date! The latest version is 0.12.14. You can update by downloading from www.terraform.io/downloads.html "; - assert_eq!( - format_terraform_version(input), - Some("v0.12.13 ".to_string()) - ); + assert_eq!(get_terraform_version(input), Some("0.12.13 ".to_string())); } #[test] |