private int Execute(CommandSet optionSet) { optionSet.showHelp = false; if (optionSet.help == null) { optionSet.help = new HelpCommand(); optionSet.AddCommand(optionSet.help); } void SetHelp(string v) => optionSet.showHelp = v != null; if (!optionSet.Options.Contains("help")) { optionSet.Options.Add("help", "", SetHelp, hidden: true); } if (!optionSet.Options.Contains("?")) { optionSet.Options.Add("?", "", SetHelp, hidden: true); } var extra = optionSet.Options.Parse(_args); if (extra.Count == 0) { if (optionSet.showHelp) { return(optionSet.help.Invoke(extra)); } return(0); } var command = optionSet.GetCommand(extra); if (command == null) { optionSet.help.WriteUnknownCommand(extra[0]); return(1); } if (optionSet.showHelp) { if (command.Options == null || command.Options.Contains("help")) { extra.Add("--help"); return(command.Invoke(extra)); } command.Options.WriteOptionDescriptions(Console.Out); return(0); } return(command.Invoke(extra)); }
public override int Invoke(IEnumerable <string> arguments) { var extra = new List <string>(arguments ?? new string[0]); if (extra.Count > 0) { var command = CommandSet.GetCommand(extra); if (command != null) { ShowCommandHelp(command); return(0); } else { WriteUnknownCommand(extra[0]); return(1); } } else { var _ = HELP_TEXT; Console.WriteLine( $@"Usage: photogrouper group {_["group"]} photogrouper ungroup {_["group"]} photogrouper list {_["group"]} photogrouper -h | --help photogrouper --version Options: -h --help {_["help"]} --version {_["version"]} -d --directory {_["directory"]} -f --format {_["format"]} -r --recursive {_["recursive"]} -j --json {_["json"]} -l --log {_["log"]}"); return(0); } }