From 95c6b979ca399671eed8bf9c72f53cfe5d46f431 Mon Sep 17 00:00:00 2001 From: Weicao-CatilGrass <1992414357@qq.com> Date: Wed, 13 May 2026 07:28:02 +0800 Subject: Migrate exit code control to resource-based system --- mingling_core/src/program/setup/basic.rs | 31 ------------ .../src/program/setup/exit_code_control.rs | 35 ------------- .../src/program/setup/general_renderer.rs | 57 ---------------------- 3 files changed, 123 deletions(-) delete mode 100644 mingling_core/src/program/setup/basic.rs delete mode 100644 mingling_core/src/program/setup/exit_code_control.rs delete mode 100644 mingling_core/src/program/setup/general_renderer.rs (limited to 'mingling_core/src/program/setup') 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 ProgramSetup for BasicProgramSetup -where - C: ProgramCollect, -{ - fn setup(&mut self, program: &mut Program) { - 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 ProgramSetup for ExitCodeSetup -where - C: ProgramCollect, -{ - fn setup(&mut self, program: &mut crate::Program) { - 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 ProgramSetup for GeneralRendererSimpleSetup -where - C: ProgramCollect, -{ - fn setup(&mut self, program: &mut Program) { - 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 ProgramSetup for GeneralRendererSetup -where - C: ProgramCollect, -{ - fn setup(&mut self, program: &mut Program) { - 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; - }); - } -} -- cgit