static void Main(string[] args) { var options = new Options(); if (CommandLine.Parser.Default.ParseArguments(args, options)) { if (options.InputFiles == null || options.InputFiles.Count == 0) { System.Console.WriteLine(options.GetUsage()); return; } string currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string outputDir = options.OutputDirectory; if (string.IsNullOrEmpty(outputDir)) { outputDir = currentPath; outputDir = Path.Combine(outputDir, "trip-gen"); } var outputUri = new DirectoryInfo(outputDir); var workingDir = currentPath; if (!workingDir.EndsWith("/")) { workingDir += "/"; } var workingUri = new Uri(workingDir, UriKind.Absolute); var target = options.Target; if (target != "java" && target != "csharp") { System.Console.WriteLine(string.Format("Invalid or missing code generation target, only 'csharp' or 'java' is accepted. ")); System.Console.WriteLine(options.GetUsage()); return; } if (target == "java") { GenerateJava(workingUri, options, outputUri); } else { GenerateCSharp(workingUri, options, outputUri); } } }
static void GenerateCSharp(Uri workingUri, Options options, DirectoryInfo outputUri) { CTripOSS.TripSerializer.CSharpGenerator.GeneratorConfig.Builder configBuilder = new CTripOSS.TripSerializer.CSharpGenerator.GeneratorConfig.Builder() .InputBase(workingUri) .OutputFolder(outputUri) .OverrideNamespace(options.OverrideNamespace) .DefaultNamespace(options.DefaultNamespace) .GenerateIncludedCode(options.GenerateIncludedCode) .CodeFlavor(options.GenerateBeans ? "csharp-ctor" : "csharp-regular"); if (options.AddDisposableInterface) { configBuilder.AddTweak(CTripOSS.TripSerializer.CSharpGenerator.GeneratorTweak.ADD_DISPOSABLE_INTERFACE); } if (options.UsePlainCSharpNamespace) { configBuilder.AddTweak(CTripOSS.TripSerializer.CSharpGenerator.GeneratorTweak.USE_PLAIN_CSHARP_NAMESPACE); } if (options.GenProtobufAttribute) { configBuilder.AddTweak(CTripOSS.TripSerializer.CSharpGenerator.GeneratorTweak.GEN_PROTOBUF_ATTRIBUTE); } IList<Uri> inputs = new List<Uri>(); foreach (var input in options.InputFiles) { inputs.Add(new Uri(input, UriKind.RelativeOrAbsolute)); } new CTripOSS.TripSerializer.CSharpGenerator.Generator(configBuilder.Build()).Parse(inputs); }
static void GenerateJava(Uri workingUri, Options options, DirectoryInfo outputUri) { CTripOSS.TripSerializer.JavaGenerator.GeneratorConfig.Builder configBuilder = new CTripOSS.TripSerializer.JavaGenerator.GeneratorConfig.Builder() .InputBase(workingUri) .OutputFolder(outputUri) .OverridePackage(options.OverrideNamespace) .DefaultPackage(options.DefaultNamespace) .GenerateIncludedCode(options.GenerateIncludedCode) .CodeFlavor(options.GenerateBeans ? "java-ctor" : "java-regular"); if (options.UsePlainCSharpNamespace) { configBuilder.AddTweak(CTripOSS.TripSerializer.JavaGenerator.GeneratorTweak.USE_PLAIN_JAVA_NAMESPACE); } IList<Uri> inputs = new List<Uri>(); foreach (var input in options.InputFiles) { inputs.Add(new Uri(input, UriKind.RelativeOrAbsolute)); } new CTripOSS.TripSerializer.JavaGenerator.Generator(configBuilder.Build()).Parse(inputs); }