diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-18 04:40:25 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-18 04:40:25 +0800 |
| commit | 7879ac01b24eb9723ec0a814adaee1fc9c52610a (patch) | |
| tree | d1c9a07e3ef8819869494c45e96bcd3e98856bdb /rola-cli/src/bin/rola.rs | |
| parent | 0b8e6e7d18abb94bd99553dc1d2b0ba5d4f265ea (diff) | |
feat(rola-cli): implement bucket creation and CLI entry point
Add bucket creation logic with pre-checks, localized error handling, and
a basic CLI entry point using the mingling framework. Introduce a
placeholder protocol for bucket transfer testing.
Diffstat (limited to 'rola-cli/src/bin/rola.rs')
| -rw-r--r-- | rola-cli/src/bin/rola.rs | 64 |
1 files changed, 63 insertions, 1 deletions
diff --git a/rola-cli/src/bin/rola.rs b/rola-cli/src/bin/rola.rs index f328e4d..1ebc3ae 100644 --- a/rola-cli/src/bin/rola.rs +++ b/rola-cli/src/bin/rola.rs @@ -1 +1,63 @@ -fn main() {} +use std::{env::current_dir, process::exit}; + +use mingling::{ + Program, + macros::program_setup, + setup::{BasicProgramSetup, ExitCodeSetup, QuietFlagSetup}, +}; +use rola_cli::{ThisProgram, locale, res::current_dir::ResCurrentDir}; + +fn main() { + let mut program = ThisProgram::new(); + + program.global_flag(["-v", "--version"], |_| { + let help = locale::helps::Basic::help().trim(); + eprintln!("{}", help); + exit(0) + }); + + // Language + locale::set_lang( + program + .pick_global_argument(["-L", "--lang"]) + .unwrap_or(locale::current_locales()), + ); + + // Resources + program.with_resource(ResCurrentDir { + cwd: current_dir().unwrap(), + }); + + // Setup + program.with_setup(StandardOutputSetup); + program.with_setup(BasicProgramSetup); + 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; + }); +} |
