protected IConfigVariables Build(Action <ConfigVariablesBuilder> config) { var builder = new ConfigVariablesBuilder(); config(builder); return(builder.Build()); }
/// <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))); }
static void Main(string[] args) { var b = new ConfigVariablesBuilder(); var app = new App(b.Build()); app.Setup(); app.Run(); Console.ReadKey(); }
/// <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)); })); }
/// <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); }
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)); })); }