Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
            }
        }