Skip to content

Commit

Permalink
refactor: Use templating to display information in 'info'
Browse files Browse the repository at this point in the history
  • Loading branch information
attakei committed Mar 21, 2024
1 parent 5aa0467 commit 463fdac
Showing 1 changed file with 27 additions and 20 deletions.
47 changes: 27 additions & 20 deletions src/commands/info.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
/* 'info' command displays data from config-file.
*/
use crate::commands::require_config;
use crate::versioning;
use crate::{commands::require_config, config::DEFAULT_FILENAME};

use anyhow::Result;
use clap::Args;
use tera::{Context, Tera};

#[derive(Args)]
pub(crate) struct Arguments {}
Expand All @@ -15,27 +16,33 @@ pub(crate) fn execute(_args: &Arguments) -> Result<()> {
return Err(config.unwrap_err());
}
let config = config.unwrap();
println!("# Version info");
println!();
println!("- Current: {}", config.current_version);
println!(
"- Next major: {}",
versioning::up_major(&config.current_version)
);
println!(
"- Next minor: {}",
versioning::up_minor(&config.current_version)
);
println!(
"- Next patch: {}",
versioning::up_patch(&config.current_version)
);
println!();
println!("# Replace targets");
println!();
let mut ctx = Context::new();
let mut files: Vec<String> = Vec::new();
files.push(DEFAULT_FILENAME.to_string());
ctx.insert("current_version", &config.current_version);
ctx.insert("next_major", &versioning::up_major(&config.current_version));
ctx.insert("next_minor", &versioning::up_minor(&config.current_version));
ctx.insert("next_patch", &versioning::up_patch(&config.current_version));
for f in config.get_files() {
println!("- {}", f.path.to_str().unwrap())
files.push(f.path.display().to_string());
}
ctx.insert("files", &files);
// Display infomation data.
println!("{}", Tera::one_off(DISPLAY_TEMPLATE, &ctx, true).unwrap());
Ok(())
}

const DISPLAY_TEMPLATE: &'static str = r#"
# Version info
- Current: {{ current_version }}
- Next major: {{ next_major }}
- Next minor: {{ next_minor }}
- Next patch: {{ next_patch }}
# Relace targets
{% for f in files -%}
- {{ f|safe }}
{% endfor -%}
"#;

0 comments on commit 463fdac

Please sign in to comment.