summaryrefslogtreecommitdiff
path: root/src/cmds/renderer/version.rs
blob: cc76636bc75a3bf2033a5799175d5ae8d6cc2833 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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()
    );
}