diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-03-14 21:39:30 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-03-14 21:39:30 +0800 |
| commit | 54b5567d6f1b1adaa6ada6a26faba0c5c492b7f3 (patch) | |
| tree | 407940ef4697e4b5eb2bf7384f26b6ec5e570a80 /src/cmds/renderer/version.rs | |
| parent | 17e7b28f162b3ed75683948144237ee17f81f7a5 (diff) | |
Add version command with banner and compile info display
Diffstat (limited to 'src/cmds/renderer/version.rs')
| -rw-r--r-- | src/cmds/renderer/version.rs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/cmds/renderer/version.rs b/src/cmds/renderer/version.rs new file mode 100644 index 0000000..cc76636 --- /dev/null +++ b/src/cmds/renderer/version.rs @@ -0,0 +1,92 @@ +use cli_utils::display::markdown::Markdown; +use render_system_macros::result_renderer; +use rust_i18n::t; + +use crate::{ + cmds::out::version::JVVersionOutput, + r_println, + systems::{cmd::errors::CmdRenderError, render::renderer::JVRenderResult}, +}; + +#[result_renderer(JVVersionRenderer)] +pub async fn render(data: &JVVersionOutput) -> Result<JVRenderResult, CmdRenderError> { + let mut r = JVRenderResult::default(); + + if data.show_banner { + draw_banner(&mut r, data) + } else { + draw_version(&mut r, data); + } + + if data.show_compile_info { + draw_compile_infos(&mut r, data); + } + + Ok(r) +} + +fn draw_banner(r: &mut JVRenderResult, data: &JVVersionOutput) { + let banner_str = t!( + "banner", + banner_line_1 = t!("version.banner_title_line").trim(), + banner_line_2 = t!( + "version.banner_cmd_version", + cli_version = data.compile_info.cli_version, + build_time = data.compile_info.date + ) + .trim(), + banner_line_3 = t!( + "version.banner_core_version", + core_version = data.compile_info_core.vcs_version + ) + .trim() + ); + let trimmed_banner_str = banner_str + .trim_start_matches("_banner_begin") + .trim_matches('\n'); + r_println!(r, "{}", trimmed_banner_str.to_string().markdown()) +} + +fn draw_version(r: &mut JVRenderResult, data: &JVVersionOutput) { + if data.show_compile_info { + r_println!( + r, + "{}", + t!( + "version.no_banner_output_with_compile_info", + version = data.compile_info.cli_version + ) + .trim() + ) + } else { + r_println!( + r, + "{}", + t!( + "version.no_banner_output", + version = data.compile_info.cli_version + ) + .trim() + ) + } +} + +fn draw_compile_infos(r: &mut JVRenderResult, data: &JVVersionOutput) { + r_println!( + r, + "\n{}", + t!( + "version.compile_info.info", + build_time = data.compile_info.date, + target = data.compile_info.target, + platform = data.compile_info.platform, + toolchain = data.compile_info.toolchain, + core_branch = data.compile_info_core.build_branch, + cli_branch = data.compile_info.build_branch, + core_commit = &data.compile_info_core.build_commit[..7], + cli_commit = &data.compile_info.build_commit[..7] + ) + .to_string() + .markdown() + ); +} |
