summaryrefslogtreecommitdiff
path: root/src/cmds/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmds/renderer')
-rw-r--r--src/cmds/renderer/version.rs92
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()
+ );
+}