commandlineparser/commandline

Implement --no-SOME_OPTION

Open

#783 建立於 2021年10月15日

在 GitHub 查看
 (10 留言) (1 反應) (0 負責人)C# (4,280 star) (461 fork)batch import
good first issuehelp wanted

描述

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.

貢獻者指南