Esempio n. 1
0
        public void Execute()
        {
            _metadataFiles.AsParallel().ForAll(file =>
            {
                var tool = Load(file);

                foreach (var task in tool.Tasks)
                {
                    if (task.OmitCommonProperties)
                    {
                        continue;
                    }

                    tool.CommonTaskProperties.ForEach(y => task.SettingsClass.Properties.Add(y.Clone()));
                }

                ApplyBackReferences(tool);

                using (var streamWriter = new StreamWriter(File.Open(tool.GenerationFileBase + ".Generated.cs", FileMode.Create)))
                {
                    ToolGenerator.Run(tool, GetNamespace(tool), streamWriter);
                }

                tool.Tasks.ForEach(x => tool.CommonTaskProperties.ForEach(y => x.SettingsClass.Properties.RemoveAll(z => z.Name == y.Name)));
                System.Threading.Tasks.Task.WaitAll(
                    tool.References.Select(reference => UpdateReference(reference, tool)).ToArray());

                Save(tool);

                Logger.Info($"Processed {Path.GetFileName(file)}.");
            });
        }
Esempio n. 2
0
        public static void GenerateCode(
            IReadOnlyCollection <string> specificationFiles,
            string baseDirectory,
            bool useNestedNamespaces,
            [CanBeNull] string baseNamespace,
            [CanBeNull] GitRepository repository)
        {
            foreach (var specificationFile in specificationFiles)
            {
                var tool = ToolSerializer.Load(specificationFile);
                // for formatting and ordering of properties
                ToolSerializer.Save(tool);
                ApplyRuntimeInformation(tool, repository);

                var generationDirectory = useNestedNamespaces ? Path.Combine(baseDirectory, tool.Name) : baseDirectory;
                var generationFile      = Path.Combine(generationDirectory, $"{Path.GetFileNameWithoutExtension(tool.DefinitionFile)}.Generated.cs");
                FileSystemTasks.EnsureExistingDirectory(generationDirectory);

                var @namespace =
                    !useNestedNamespaces
                        ? baseNamespace
                        : string.IsNullOrEmpty(baseNamespace)
                            ? tool.Name
                            : $"{baseNamespace}.{tool.Name}";

                using (var fileStream = File.Open(generationFile, FileMode.Create))
                    using (var streamWriter = new StreamWriter(fileStream))
                    {
                        ToolGenerator.Run(tool, @namespace, streamWriter);
                    }

                Logger.Info($"Generated code from '{Path.GetFileName(tool.DefinitionFile)}'.");
            }
        }
Esempio n. 3
0
        public static void GenerateCode(Tool tool, string outputFile)
        {
            FileSystemTasks.EnsureExistingDirectory(Path.GetDirectoryName(outputFile));

            using (var fileStream = File.Open(outputFile, FileMode.Create))
                using (var streamWriter = new StreamWriter(fileStream))
                {
                    ToolGenerator.Run(tool, streamWriter);
                }

            Logger.Info($"Generated code for {tool.Name} from {Path.GetFileName(tool.SpecificationFile) ?? "<in-memory>"}.");
        }