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)}."); }); }
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)}'."); } }
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>"}."); }