static void Run(GeneratorOptions options) { if (!File.Exists(options.ApiDescriptionFilePath)) { throw new InvalidOperationException($"API description file '{options.ApiDescriptionFilePath}' does not exist."); } List <string> fixups = null; ApiDescriptionReader apiReader = null; try { if (options.ApiFixupFiles != null && options.ApiFixupFiles.Count > 0) { foreach (string afp in options.ApiFixupFiles.Distinct(fileNameComparer)) { if (String.IsNullOrEmpty(afp)) { continue; } if (!File.Exists(afp)) { throw new InvalidOperationException($"API fixup file '{afp}' does not exist."); } if (fixups == null) { fixups = new List <string> (); } fixups.Add(afp); } } apiReader = new ApiDescriptionReader(options.ApiDescriptionFilePath, fixups) { DumpFixedUp = options.DumpFixedUp }; FormattingCodeGenerator codeGenerator = GetCodeGenerator(options.CodeGenerator, new FormattingContext(GetCodeStyle(options.CodeStyle))); var context = new GeneratorContext(codeGenerator, options.FileEncoding) { DumpHierarchy = options.DumpHierarchy, HierarchyDumpFilePath = options.ApiDescriptionFilePath + ".hierarchy" }; var generator = new Generator(context, options.OverwriteFiles); generator.Generate(options.OutputPath, apiReader.Parse()); } finally { apiReader?.Dispose(); } }
protected BaseMethodCodeGenerator(FormattingCodeGenerator generator) : base(generator) { }