summaryrefslogtreecommitdiffstats
path: root/src/modules/terraform.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/terraform.rs')
-rw-r--r--src/modules/terraform.rs43
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]