microsoft / knack

Knack - A Python command line interface framework
https://pypi.python.org/pypi/knack
MIT License
347 stars 95 forks source link

How to disable default Global Arguments (especially -o)? #246

Open dylanwa opened 3 years ago

dylanwa commented 3 years ago

I have a command accepting argument --output-path, and I set its options_list also accept "-o", but it does not work, conflict with the default global argument. It means we can't use --output and -o for our commands.

Question:

  1. How to disable Global Arguments, at least for "--output", "-o", or even "--query"?

More details: with ArgumentsContext(self, "config fetch") as arg_context: arg_context.argument("output", type=str, options_list=("-o", "--output-path"))

When I tried it, it reports conflict error: $ mycli config fetch -o test.json argument -o/--output-path: conflicting option string: -o

and only this option works: $ mycli config fetch --output-path test.json

$ mycli config fetch -h

Command mycli config fetch

Arguments --output-path : Default: my_config.json.

Global Arguments --debug : Increase logging verbosity to show all debug logs. --help -h : Show this help message and exit. --only-show-errors : Only show errors, suppressing warnings. --output -o : Output format. Allowed values: json, jsonc, none, table, tsv, yaml, yamlc. Default: json. --query : JMESPath query string. See http://jmespath.org/ for more information and examples. --verbose : Increase logging verbosity. Use --debug for full debug logs.