diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-08-03 20:46:22 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-08-04 20:17:03 +0800 |
| commit | c308ee61c65df23b58cae12b2f2f99d754f3dbff (patch) | |
| tree | b1fff5e9194916887c83551ac844f2e2e8bf3f1d /mingling_cli/src/metadata | |
| parent | a72209811fcee0e05e45562bc702b93388b52c30 (diff) | |
refactor: extract metadata args into reusable statics
Diffstat (limited to 'mingling_cli/src/metadata')
| -rw-r--r-- | mingling_cli/src/metadata/setup.rs | 32 |
1 files changed, 25 insertions, 7 deletions
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<Vec<String>> = arg![features: Vec<String>]; + +/// Argument: custom path to Cargo.toml +pub static ARG_MANIFEST_PATH: PickerArg<Option<String>> = arg![manifest_path: Option<String>]; + +/// Argument: output message format +pub static ARG_MESSAGE_FORMAT: PickerArg<String> = arg![message_format: String]; + +/// Argument: enable all features +pub static ARG_ALL_FEATURES: PickerArg<Flag> = arg![all_features: Flag]; + +/// Argument: disable default features +pub static ARG_NO_DEFAULT_FEATURES: PickerArg<Flag> = arg![no_default_features: Flag]; + +/// Argument: do not include dependencies in metadata +pub static ARG_NO_DEPS: PickerArg<Flag> = 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<crate::ThisProgram>) { no_default_features, no_deps, ) = args - .pick(&arg![features: Vec<String>]) - .pick(&arg![manifest_path: Option<String>]) - .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 |
