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
|
use std::{env::current_dir, process::exit};
use mingling::{
Program,
macros::program_setup,
setup::{ExitCodeSetup, HelpFlagSetup, QuietFlagSetup},
};
use rola_cli::{ThisProgram, locale, res::current_dir::ResCurrentDir};
fn main() {
let mut program = ThisProgram::new();
// Language
locale::set_lang(
program
.pick_global_argument(["-L", "--lang"])
.unwrap_or(locale::current_locales()),
);
// Version
program.global_flag(["-v", "--version"], |_| {
eprintln!("{}", include_str!("../../version.txt"));
exit(0)
});
// Resources
program.with_resource(ResCurrentDir {
cwd: current_dir().unwrap(),
});
// Setup
program.with_setup(HelpFlagSetup::new(["-h", "--help"]));
program.with_setup(StandardOutputSetup);
program.with_setup(ExitCodeSetup::default());
// Execute
let quiet = program.stdout_setting.quiet;
let error_output = program.stdout_setting.error_output && !quiet;
let render_output = program.stdout_setting.render_output && !quiet;
let result = program.exec_without_render().unwrap();
if !result.is_empty() {
if result.exit_code == 0 && render_output {
println!("{}", result.trim());
} else if error_output {
eprintln!("{}", result.trim());
}
}
exit(result.exit_code);
}
#[program_setup]
fn standard_output_setup(program: &mut Program<ThisProgram>) {
program.with_setup(QuietFlagSetup::new("--silence"));
program.global_flag(["--no-error"], |program| {
program.stdout_setting.error_output = false;
});
program.global_flag(["--no-result"], |program| {
program.stdout_setting.render_output = false;
});
program.global_flag(["--silence", "--quiet"], |program| {
program.stdout_setting.quiet = true;
});
}
|