commandlineparser / commandlineparser/commandline

Implement --no-SOME_OPTION

Open
#783 10 comments 1 reaction 0 assignees View on GitHub
good first issue help wanted
Dominant language
C#
Stars
4.8k
Forks
478
PR merge metrics
No merged PRs in 30d

Description

I want these mutually exclusive options:

- --updateParts
- --not-updateParts

The default is to update parts, and it's disabled if the second flag is passed. The user needs to pass one flag or the other (so they don't get a behavior they didn't explicitly ask for).

Is there any way to do this? I had a go with this:

`class Options
{
private static bool _updateParts;

public Options(bool updateParts, bool doNotUpdateParts)
{
_updateParts = updateParts;
if (doNotUpdateParts) _updateParts = false;
}

[Option('c', "updateParts", SetName = "update", Required = true, Default = true)]
public static bool UpdateParts { get { return _updateParts; } }

[Option('C', "no-updateParts", SetName = "noUpdate", Required = true, Default = false)]
public static bool DoNotUpdateParts { get { return !_updateParts; } }
}`

Generally speaking this works, but it means I can't add two other options which are mutually exclusive. Imagine I now want to add:

- --doLogging
- --not-doLogging

I can't make them mutually exclusive because they don't belong to either set update or noUpdate.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.