From c308ee61c65df23b58cae12b2f2f99d754f3dbff Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Mon, 3 Aug 2026 20:46:22 +0800 Subject: refactor: extract metadata args into reusable statics --- mingling_cli/src/metadata/setup.rs | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'mingling_cli/src/metadata') diff --git a/mingling_cli/src/metadata/setup.rs b/mingling_cli/src/metadata/setup.rs index 198baf1..d9836fd 100644 --- a/mingling_cli/src/metadata/setup.rs +++ b/mingling_cli/src/metadata/setup.rs @@ -4,7 +4,7 @@ use cargo_metadata::{CargoOpt, MetadataCommand}; use mingling::{ LazyInit, Program, macros::program_setup, - picker::{IntoPicker, value::Flag}, + picker::{IntoPicker, PickerArg, value::Flag}, prelude::*, res::ResCurrentDir, }; @@ -37,6 +37,24 @@ pub struct ResUsingJson { pub using: bool, } +/// Argument: list of features to enable +pub static ARG_FEATURES: PickerArg> = arg![features: Vec]; + +/// Argument: custom path to Cargo.toml +pub static ARG_MANIFEST_PATH: PickerArg> = arg![manifest_path: Option]; + +/// Argument: output message format +pub static ARG_MESSAGE_FORMAT: PickerArg = arg![message_format: String]; + +/// Argument: enable all features +pub static ARG_ALL_FEATURES: PickerArg = arg![all_features: Flag]; + +/// Argument: disable default features +pub static ARG_NO_DEFAULT_FEATURES: PickerArg = arg![no_default_features: Flag]; + +/// Argument: do not include dependencies in metadata +pub static ARG_NO_DEPS: PickerArg = arg![no_deps: Flag]; + impl ResMetadata { /// Returns a reference to the parsed `cargo metadata`. /// @@ -64,12 +82,12 @@ pub fn cargo_metadata_setup(program: &mut Program) { no_default_features, no_deps, ) = args - .pick(&arg![features: Vec]) - .pick(&arg![manifest_path: Option]) - .pick_or(&arg![message_format: String], || "disable".to_string()) - .pick(&arg![all_features: Flag]) - .pick(&arg![no_default_features: Flag]) - .pick(&arg![no_deps: Flag]) + .pick(&ARG_FEATURES) + .pick(&ARG_MANIFEST_PATH) + .pick_or(&ARG_MESSAGE_FORMAT, || "disable".to_string()) + .pick(&ARG_ALL_FEATURES) + .pick(&ARG_NO_DEFAULT_FEATURES) + .pick(&ARG_NO_DEPS) .unwrap(); // Is Using Json -- cgit