示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }