Ejemplo n.º 1
0
        protected IConfigVariables Build(Action <ConfigVariablesBuilder> config)
        {
            var builder = new ConfigVariablesBuilder();

            config(builder);
            return(builder.Build());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Add linkable config variables
        /// </summary>
        /// <param name="builder">child builder which will be wrapped</param>
        /// <param name="config"></param>
        /// <returns></returns>
        public static ConfigVariablesBuilder Linkable(this ConfigVariablesBuilder builder,
                                                      Action <ConfigVariablesBuilder> config)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.ChildBuilder(config, x => new LinkableConfigVariables(x)));
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            var b   = new ConfigVariablesBuilder();
            var app = new App(b.Build());

            app.Setup();
            app.Run();

            Console.ReadKey();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Add static config variables to <paramref name="builder"/>
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="config">static config variables action</param>
        /// <returns></returns>
        public static ConfigVariablesBuilder Static(this ConfigVariablesBuilder builder, Action <Action <string, string> > config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Dictionary(dict =>
            {
                config((key, value) => dict.Add(key, value));
            }));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Add DictionaryConfigVariables to <paramref name="builder"/>
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public static ConfigVariablesBuilder Dictionary(this ConfigVariablesBuilder builder,
                                                        Action <DictionaryConfigVariablesBuilder> config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var dictionaryBuilder = new DictionaryConfigVariablesBuilder();

            config(dictionaryBuilder);

            builder.AddBuilder(dictionaryBuilder);

            return(builder);
        }
Ejemplo n.º 6
0
        public CommandRunResult Run(string commandName)
        {
            var command = this.commandsLookups[commandName].FirstOrDefault();

            if (command == null)
            {
                return(CommandRunResult.Fail(
                           $"Command {commandName} not found. Available commands: [{string.Join(", ", this.commands.Select(x => x.Definition().Name))}]"));
            }

            var def        = command.Definition();
            var parameters = def.Parameters;

            var taskSpecificVars = vars.WithPrefix($"Commands:{def.Name}:");

            var missedRequiredParameters = parameters.Where(x => x.Required && taskSpecificVars[x.Name] == null);

            if (missedRequiredParameters.Any())
            {
                return(Failed((error, info) =>
                {
                    error.WriteLine($"Missing required parameters {string.Join(", ", missedRequiredParameters.Select(x => "<" + x.Name + ">"))}");
                    new CommandHelpPrinter(info).Print(command);
                }));
            }

            var varsWithDefaultParameters = new ConfigVariablesBuilder()
                                            .Add(new CommandDefinitionConfigVars(def))
                                            .Add(taskSpecificVars)
                                            .Build();

            return(RunGeneric((error, info) =>
            {
                command.Run(new CommandRunContext(varsWithDefaultParameters, info, error));
            }));
        }