diff options
| author | Weicao-CatilGrass <1992414357@qq.com> | 2026-05-13 07:28:02 +0800 |
|---|---|---|
| committer | Weicao-CatilGrass <1992414357@qq.com> | 2026-05-13 07:28:02 +0800 |
| commit | 95c6b979ca399671eed8bf9c72f53cfe5d46f431 (patch) | |
| tree | 8225b39bee4ad3b7ebc8a36ab978d1329f667eb8 /mingling_core/src/program/setup | |
| parent | fef888b75b2544765aa06808c14490a2af827313 (diff) | |
Migrate exit code control to resource-based system
Diffstat (limited to 'mingling_core/src/program/setup')
| -rw-r--r-- | mingling_core/src/program/setup/basic.rs | 31 | ||||
| -rw-r--r-- | mingling_core/src/program/setup/exit_code_control.rs | 35 | ||||
| -rw-r--r-- | mingling_core/src/program/setup/general_renderer.rs | 57 |
3 files changed, 0 insertions, 123 deletions
diff --git a/mingling_core/src/program/setup/basic.rs b/mingling_core/src/program/setup/basic.rs deleted file mode 100644 index 9bd4056..0000000 --- a/mingling_core/src/program/setup/basic.rs +++ /dev/null @@ -1,31 +0,0 @@ -use crate::{ - ProgramCollect, - program::{Program, setup::ProgramSetup}, -}; - -/// Performs basic program initialization: -/// -/// - Collects `--quiet` flag to control message rendering -/// - Collects `--help` flag to enable help mode -/// - Collects `--confirm` flag to skip user confirmation -pub struct BasicProgramSetup; - -impl<C> ProgramSetup<C> for BasicProgramSetup -where - C: ProgramCollect<Enum = C>, -{ - fn setup(&mut self, program: &mut Program<C>) { - program.global_flag(["--quiet", "-q"], |p| { - p.stdout_setting.render_output = false; - p.stdout_setting.error_output = false; - }); - - program.global_flag(["--help", "-h"], |p| { - p.user_context.help = true; - }); - - program.global_flag(["--confirm", "-C"], |p| { - p.user_context.confirm = true; - }); - } -} diff --git a/mingling_core/src/program/setup/exit_code_control.rs b/mingling_core/src/program/setup/exit_code_control.rs deleted file mode 100644 index 20cd9b2..0000000 --- a/mingling_core/src/program/setup/exit_code_control.rs +++ /dev/null @@ -1,35 +0,0 @@ -use std::sync::atomic::{AtomicI32, Ordering}; - -use crate::{ProgramCollect, hook::ProgramAnonymousHook, setup::ProgramSetup}; - -static EXIT_CODE: AtomicI32 = AtomicI32::new(0); - -/// Provides the ability to control the program's exit code, which is returned when the program ends. -/// -/// - Use `mingling::update_exit_code` to update the exit code. -/// - Use `mingling::current_exit_code` to query the current exit code. -pub struct ExitCodeSetup; - -impl<C> ProgramSetup<C> for ExitCodeSetup -where - C: ProgramCollect<Enum = C>, -{ - fn setup(&mut self, program: &mut crate::Program<C>) { - program.with_hook_anonymous(ProgramAnonymousHook::empty().on_finish(current_exit_code)); - } -} - -/// Updates the program's exit code. -/// -/// This function sets the value that will be returned when the program exits. -/// The new code will take effect immediately and be used when the program finishes. -pub fn update_exit_code(code: i32) { - EXIT_CODE.store(code, Ordering::SeqCst); -} - -/// Returns the current exit code. -/// -/// This function queries the value that will be returned when the program exits. -pub fn current_exit_code() -> i32 { - EXIT_CODE.load(Ordering::SeqCst) -} diff --git a/mingling_core/src/program/setup/general_renderer.rs b/mingling_core/src/program/setup/general_renderer.rs deleted file mode 100644 index d2666da..0000000 --- a/mingling_core/src/program/setup/general_renderer.rs +++ /dev/null @@ -1,57 +0,0 @@ -use crate::{ - ProgramCollect, - program::{Program, setup::ProgramSetup}, -}; - -/// Sets up the general renderer for the program: -/// -/// - Adds a `--renderer` global argument to specify the renderer type -pub struct GeneralRendererSimpleSetup; - -impl<C> ProgramSetup<C> for GeneralRendererSimpleSetup -where - C: ProgramCollect<Enum = C>, -{ - fn setup(&mut self, program: &mut Program<C>) { - program.global_argument("--renderer", |p, renderer| { - p.general_renderer_name = renderer.into(); - }); - } -} - -/// Sets up the general renderer for the program: -/// -/// - Adds global flags to specify the renderer type: -/// * `--json` for JSON output -/// * `--json-pretty` for pretty-printed JSON output -/// * `--yaml` for YAML output -/// * `--toml` for TOML output -/// * `--ron` for RON output -/// * `--ron-pretty` for pretty-printed RON output -pub struct GeneralRendererSetup; - -impl<C> ProgramSetup<C> for GeneralRendererSetup -where - C: ProgramCollect<Enum = C>, -{ - fn setup(&mut self, program: &mut Program<C>) { - program.global_flag("--json", |p| { - p.general_renderer_name = crate::GeneralRendererSetting::Json - }); - program.global_flag("--json-pretty", |p| { - p.general_renderer_name = crate::GeneralRendererSetting::JsonPretty; - }); - program.global_flag("--yaml", |p| { - p.general_renderer_name = crate::GeneralRendererSetting::Yaml; - }); - program.global_flag("--toml", |p| { - p.general_renderer_name = crate::GeneralRendererSetting::Toml; - }); - program.global_flag("--ron", |p| { - p.general_renderer_name = crate::GeneralRendererSetting::Ron; - }); - program.global_flag("--ron-pretty", |p| { - p.general_renderer_name = crate::GeneralRendererSetting::RonPretty; - }); - } -} |
