Exemple #1
0
        static void Main(string[] args)
        {
            //var inputFiles = new string[0];
            //var inputDirectories = new[] { @"C:\Users\y.kawai\Documents\Grani\IvoryLfs\Ivory\Ivory.Shared" };

            //var c = new TypeCollector(inputFiles, inputDirectories, new string[0], true);


            var cmdArgs = new CommandlineArguments(args);

            if (!cmdArgs.IsParsed)
            {
                return;
            }

            // Generator Start...

            var sw = Stopwatch.StartNew();

            Console.WriteLine("Project Compilation Start:" + string.Join(",", cmdArgs.InputFiles) + " " + string.Join(",", cmdArgs.InputDirectories));

            var collector = new TypeCollector(cmdArgs.InputFiles, cmdArgs.InputDirectories, cmdArgs.ConditionalSymbols, cmdArgs.AdditionalCompilationDirectories, !cmdArgs.AllowInternal);

            Console.WriteLine("Project Compilation Complete:" + sw.Elapsed.ToString());
            Console.WriteLine();

            sw.Restart();
            Console.WriteLine("Method Collect Start");

            var(objectInfo, genericInfo) = collector.Collect();

            Console.WriteLine("Method Collect Complete:" + sw.Elapsed.ToString());

            Console.WriteLine("Output Generation Start");
            sw.Restart();

            var objectFormatterTemplates = objectInfo
                                           .GroupBy(x => x.Namespace)
                                           .Select(x => new FormatterTemplate()
            {
                Namespace = cmdArgs.GetNamespaceDot() + "Formatters" + ((x.Key == null) ? "" : "." + x.Key),
                objectSerializationInfos = x.ToArray(),
            })
                                           .ToArray();

            var resolverTemplate = new ResolverTemplate()
            {
                Namespace          = cmdArgs.GetNamespaceDot() + "Resolvers",
                FormatterNamespace = cmdArgs.GetNamespaceDot() + "Formatters",
                ResolverName       = cmdArgs.ResolverName,
                registerInfos      = genericInfo.Cast <IResolverRegisterInfo>().Concat(objectInfo).ToArray()
            };

            var sb = new StringBuilder();

            sb.AppendLine(resolverTemplate.TransformText());
            sb.AppendLine();

            foreach (var item in objectFormatterTemplates)
            {
                var text = item.TransformText();
                sb.AppendLine(text);
            }

            Output(cmdArgs.OutputPath, sb.ToString());

            Console.WriteLine("String Generation Complete:" + sw.Elapsed.ToString());
        }