aboutsummaryrefslogtreecommitdiff
path: root/mingling_cli/src
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-03 20:46:22 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-04 20:17:03 +0800
commitc308ee61c65df23b58cae12b2f2f99d754f3dbff (patch)
treeb1fff5e9194916887c83551ac844f2e2e8bf3f1d /mingling_cli/src
parenta72209811fcee0e05e45562bc702b93388b52c30 (diff)
refactor: extract metadata args into reusable statics
Diffstat (limited to 'mingling_cli/src')
-rw-r--r--mingling_cli/src/main.rs16
-rw-r--r--mingling_cli/src/metadata/setup.rs32
2 files changed, 39 insertions, 9 deletions
diff --git a/mingling_cli/src/main.rs b/mingling_cli/src/main.rs
index 149093c..b9164db 100644
--- a/mingling_cli/src/main.rs
+++ b/mingling_cli/src/main.rs
@@ -1,4 +1,10 @@
-use crate::metadata::MinglingMetadataSetup;
+use crate::metadata::{
+ MinglingMetadataSetup,
+ setup::{
+ ARG_ALL_FEATURES, ARG_FEATURES, ARG_MANIFEST_PATH, ARG_MESSAGE_FORMAT,
+ ARG_NO_DEFAULT_FEATURES, ARG_NO_DEPS,
+ },
+};
use mingling::{
ShellContext, Suggest,
consts::HELP_FLAG,
@@ -35,7 +41,13 @@ pub fn help_global(_: EntryFallback) -> String {
#[completion(EntryFallback)]
pub fn complete_global(_ctx: &ShellContext) -> Suggest {
suggest! {
- HELP_FLAG: "Show help messages"
+ HELP_FLAG: "Show help messages",
+ ARG_FEATURES.clone(): "List of features to enable",
+ ARG_MANIFEST_PATH.clone(): "Custom path to Cargo.toml",
+ ARG_MESSAGE_FORMAT.clone(): "Output message format",
+ ARG_ALL_FEATURES: "Enable all features",
+ ARG_NO_DEFAULT_FEATURES: "Disable default features",
+ ARG_NO_DEPS: "Do not include dependencies in 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<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