google/python-fire

Version flag alongside other commands

amin-nejad opened this issue · 3 comments

I have a script which has multiple commands, each of which have their own arguments etc. I would like to add a simple flag to be used standalone to simply display the version of my script. I would like the the --help display to additionally show users this flag is available without affecting the other commands. For instance if my script is called foo, I'd like to be able to do:

foo --version or foo -v

but I'd still like to do:

foo mycommand myarg etc.

The two closest solutions I've tried each have a downside:

  • the flags and the commands are displayed in different help windows e.g. foo --help shows the help window for the flags whilst foo standlone shows the help window for the commands
  • the help window shows both flags and commands but the flag is interpreted as a flag to the commands such that if I type foo --version, the version is displayed but so is the help window because it thinks a command is missing

I'm using fire==0.5.0. Is there any way I can achieve this?

The short option should be -V, as -v is usually short for verbose.

Otherwise this would be a great feature, as command --version is a very common pattern on CLI programs for testing if it is installed correctly.

Right now foo --version is not supported but foo -- --version is. The reason we originally chose not to support foo --version is that the function foo could have an argument named version, and in that case it would be a name collision.

I would be supportive of a change that makes foo --version in addition to foo -- --version in all cases except where --version is an acceptable flag to foo. However, note that such a change is not currently planned.