예제 #1
0
        private static async Task Main(string[] args)
        {
            var buildCommand = new Command("build")
            {
                new Argument <FileInfo>("solution-file").ExistingOnly(),
                new Argument <FileInfo>("output-directory"),
                new Option("--output-csharp")
                {
                    Argument = new Argument <bool>(defaultValue: () => false)
                },
                new Option("--verbosity")
                {
                    Argument = new Argument <LogLevel>(defaultValue: () => LogLevel.Information)
                },
                new Option("--test")
                {
                    Argument = new Argument <bool>(defaultValue: () => true)
                },
            };

            var runCommand = new Command("run")
            {
                new Argument <FileInfo>("solution-file").ExistingOnly(),
                new Argument <string>("project-name"),
                new Option("--verbosity")
                {
                    Argument = new Argument <LogLevel>(defaultValue: () => LogLevel.Information)
                },
            };

            var rootCommand = new RootCommand
            {
                buildCommand,
                runCommand,
            };

            buildCommand.Handler = CommandHandler.Create(
                async(FileInfo solutionFile, FileInfo outputDirectory, bool outputCSharp, LogLevel verbosity, bool test) =>
            {
                await using var container = new FlcContainer(verbosity);
                var success = await container.RunAsync(compiler => compiler.Build(
                                                           solutionFile.FullName,
                                                           outputDirectory.FullName,
                                                           outputCSharp,
                                                           test,
                                                           cancellationToken: default));
                return(success ? 0 : 1);
            });

            runCommand.Handler = CommandHandler.Create(
                async(FileInfo solutionFile, string projectName, LogLevel verbosity) =>
            {
                await using var container = new FlcContainer(verbosity);
                await container.RunAsync(compiler => compiler.Run(solutionFile.FullName, projectName, default));
            });

            await rootCommand.InvokeAsync(args);
        }
예제 #2
0
 public async Task CanResolveCompiler()
 {
     await using var container = new FlcContainer(LogLevel.Information);
     await container.RunAsync(compiler => Assert.NotNull(compiler));
 }