From 7879ac01b24eb9723ec0a814adaee1fc9c52610a Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Thu, 18 Jun 2026 04:40:25 +0800 Subject: 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. --- rola-cli/src/bin/rola.rs | 64 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) (limited to 'rola-cli/src/bin') 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) { + 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; + }); +} -- cgit