Beispiel #1
0
        public static async Task Main(params string[] args)
        {
            try
            {
                if (args == null || args.Length < 3)
                {
                    Console.WriteLine("Usage: outputDir underlyingType structName [fullName] [namespace]");
                    return;
                }

                var output = new DirectoryInfo(args[0]);

                var arguments = new SvoArguments
                {
                    Underlying = SimpleType.Parse(args[1]),
                    Name       = args[2],
                };

                if (args.Length > 3)
                {
                    arguments.FullName = args[3];
                }
                if (args.Length > 4)
                {
                    arguments.Namespace = args[4];
                }

                var generator = new SvoCodeGenerator(arguments);
                var initial   = await generator.GenerateInitialAsync();

                var generated = await generator.GenerateAsync();

                var unitTests = await generator.GenerateUnitTestsAsync();


                var structFile = new FileInfo(Path.Combine(output.FullName, $"{arguments.Name}.cs"));
                var geneFile   = new FileInfo(Path.Combine(output.FullName, $"{arguments.Name}.generated.cs"));
                var testFile   = new FileInfo(Path.Combine(output.FullName, $"{arguments.Name}Test.cs"));

                using (var writer = new StreamWriter(structFile.FullName, false, Encoding.UTF8))
                {
                    initial.WriteTo(writer);
                }
                using (var writer = new StreamWriter(geneFile.FullName, false, Encoding.UTF8))
                {
                    generated.WriteTo(writer);
                }
                using (var writer = new StreamWriter(testFile.FullName, false, Encoding.UTF8))
                {
                    unitTests.WriteTo(writer);
                }
            }
            catch (Exception x)
            {
                Console.Error.WriteLine(x);
            }
        }
 public SvoDefine(SvoArguments args) => Args = args;
 public SvoCodeGenerator(SvoArguments arguments)
 {
     Arguments = arguments;
 }