protected IContainer CreateScope( ICakeConfiguration configuration, IRemainingArguments arguments, Action <ICakeContainerRegistrar> action = null) { var registrar = new AutofacTypeRegistrar(new ContainerBuilder()); _configurator.Configure(registrar, configuration, arguments); action?.Invoke(registrar); return(registrar.BuildContainer()); }
public static async Task <int> Main(string[] args) { var registrar = new AutofacTypeRegistrar(BuildContainer()); var app = new CommandApp <BuildCommand>(registrar); app.Configure(config => { config.SetApplicationName("advanced"); config.AddCommand <BuildCommand>("build"); }); return(await app.RunAsync(args)); }
public static async Task <int> Main(string[] args) { var registrar = new AutofacTypeRegistrar(BuildContainer()); var app = new CommandApp(registrar); app.Configure(config => { config.SetApplicationName("advanced.exe"); config.ValidateExamples(); // You can add the command directly. config.AddCommand <BuildCommand>("build") .WithExample(new[] { "build", "test.csproj" }); // Add a branched command hierarchy. config.AddBranch("foo", foo => { // Since we've created a branch without // specifying what settings the branch should // be based on, we can put anything in this level. foo.AddCommand <BuildCommand>("build"); // Create a new branch based on BuildSettings. foo.AddBranch <BuildSettings>("bar", bar => { // We're now forced to use commands that // inherit its settings from BuildSettings. bar.AddCommand <BuildCommand>("build"); // Add a delegate command based on BuildSettings. bar.AddDelegate <BuildSettings>("qux", (c, s) => { Console.WriteLine("Project:", s.Project); return(0); // Exit code }) // Add an example to the configured command. .WithDescription("Print project name."); }); }); }); return(await app.RunAsync(args)); }