"Loris Bennett" <[email protected]> writes:

> Hi,
>
> I am writing a program for the command-line which uses 'argsparse'.  I
> want to make some options mandatory by setting 'required=True', but
> still allow the program to run with the option '--version' (which just
> shows the version and then exits) even if the mandatory options are
> missing.
>
> Is there a standard way of doing this?

I see that instead of setting required to 'True' I can use an expression
which checks whether '--version' has been given:

    parser.add_argument(
        "uid", nargs="+",
        help="UIDs to send mail to"
    )
    parser.add_argument(
        '-s', '--subject', dest='subject', required=not '--version' in sys.argv,
        help="subject of email"
    )
    parser.add_argument(
        '-c', '--content_file', dest='content_file', required=not '--version' 
in sys.argv,
        help="file containing mail contents (without salutation or signature)"
    )
    parser.add_argument(
        '--version', action='store_true', dest='version',
        help="print version"

However, with the above, I still need to specify the mandatory argument,
even if I only want to see the version.

I guess I'll just have to change 

  nargs="+" 

to 

  nargs="*"

and check explicitly whether any arguments have been given.

Seems odd to me though that there is not a standard way of implementing
'--version' which works like '--help' does.

Cheers,

Loris

-- 
This signature is currently under constuction.
-- 
https://mail.python.org/mailman3//lists/python-list.python.org

Reply via email to