public ConsoleCommand HasRequiredOption <T>(string prototype, string description, Action <T> action)
        {
            var requiredRecord = new RequiredOptionRecord();

            var option = new Option <T>(prototype, description, s =>
            {
                requiredRecord.WasIncluded = true;
                action(s);
            });

            OptionsHasd.Add(option);


            requiredRecord.Name = option.Template;

            RequiredOptions.Add(requiredRecord);

            return(this);
        }
        public ConsoleCommand HasRequiredOption <T>(string prototype, string description, Action <T> action)
        {
            var requiredRecord = new RequiredOptionRecord();

            var previousOptions = OptionsHasd.ToArray();

            OptionsHasd.Add <T>(prototype, description, s =>
            {
                requiredRecord.WasIncluded = true;
                action(s);
            });

            var newOption = OptionsHasd.Single(o => !previousOptions.Contains(o));

            requiredRecord.Name = newOption.GetNames().OrderByDescending(n => n.Length).First();

            RequiredOptions.Add(requiredRecord);

            return(this);
        }
 public ConsoleCommand HasOption <TKey, TValue>(string prototype, string description, OptionAction <TKey, TValue> action)
 {
     OptionsHasd.Add(prototype, description, action);
     return(this);
 }
        public ConsoleCommand HasOption(string prototype, string description, Action <string> action)
        {
            OptionsHasd.Add(prototype, description, action);

            return(this);
        }