From 2661683a7cbe252b05823faa719554c96af362d9 Mon Sep 17 00:00:00 2001 From: floriskn <48930050+floriskn@users.noreply.github.com> Date: Sun, 15 Jun 2025 13:55:10 +0200 Subject: [PATCH] feat(cli): add support for global CLI arguments Added a new `global: bool` field to the `CliArg` struct to support global CLI arguments. --- plugins/cli/src/config.rs | 6 ++++++ plugins/cli/src/parser.rs | 2 ++ 2 files changed, 8 insertions(+) diff --git a/plugins/cli/src/config.rs b/plugins/cli/src/config.rs index f7f36a0e..bd4a3015 100644 --- a/plugins/cli/src/config.rs +++ b/plugins/cli/src/config.rs @@ -114,6 +114,12 @@ pub struct Arg { /// It does not define position in the argument list as a whole. When utilized with multiple=true, /// only the last positional argument may be defined as multiple (i.e. the one with the highest index). pub index: Option, + /// Specifies whether the argument should be global. + /// + /// Global arguments are propagated to all subcommands automatically, + /// making them available throughout the CLI regardless of where they are defined. + #[serde(default)] + pub global: bool, } /// describes a CLI configuration diff --git a/plugins/cli/src/parser.rs b/plugins/cli/src/parser.rs index 69a926c1..64ec2fb7 100644 --- a/plugins/cli/src/parser.rs +++ b/plugins/cli/src/parser.rs @@ -278,5 +278,7 @@ fn get_arg(arg_name: String, arg: &Arg) -> ClapArg { clap_arg = bind_value_arg!(arg, clap_arg, require_equals); clap_arg = bind_value_arg!(arg, clap_arg, index); + clap_arg = clap_arg.global(arg.global); + clap_arg }