google / python-fire

Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object.
Other
26.86k stars 1.44k forks source link

Version flag alongside other commands #468

Open amin-nejad opened 11 months ago

amin-nejad commented 11 months ago

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:

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

jfrost-mo commented 10 months ago

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.

dbieber commented 9 months ago

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.

dbieber commented 9 months ago

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.