summaryrefslogtreecommitdiff
path: root/rola-cli/src/bin
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-18 04:40:25 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-18 04:40:25 +0800
commit7879ac01b24eb9723ec0a814adaee1fc9c52610a (patch)
treed1c9a07e3ef8819869494c45e96bcd3e98856bdb /rola-cli/src/bin
parent0b8e6e7d18abb94bd99553dc1d2b0ba5d4f265ea (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')
-rw-r--r--rola-cli/src/bin/rola.rs64
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;
+ });
+}