private static void Main(Configuration configuration) { if (!Directory.Exists(configuration.OutputDirectory)) { throw new PlainTextException("Output directory '{0}' does not exist.", configuration.OutputDirectory); } // Parse Moai code var parser = new MoaiParser(statusCallback: s => Console.WriteLine("[] {0}", s)); parser.Parse(new DirectoryInfo(configuration.InputDirectory)); // Show warning count if (parser.Warnings.Any()) { Console.WriteLine("\nParsing resulted in {0} warnings. For more information, run DocLint.", parser.Warnings.Count); } // Export API description string header = string.Format(CultureInfo.InvariantCulture, "Documentation for {0} (http://getmoai.com/)\n" + "Generated on {1:yyyy-MM-dd} by {2}.\n" + CurrentUtility.MoaiUtilsHint, parser.MoaiVersionInfo, DateTime.Now, CurrentUtility.Signature); IApiExporter exporter; switch (configuration.ExportFormat) { case ExportFormat.ZeroBrane: exporter = new ZeroBraneExporter(); break; case ExportFormat.SublimeText: exporter = new SublimeTextExporter(); break; case ExportFormat.XML: exporter = new XmlExporter(); break; default: throw new ArgumentOutOfRangeException(); } DirectoryInfo outputDirectory = new DirectoryInfo(configuration.OutputDirectory); exporter.Export(parser.DocumentedClasses.ToArray(), header, outputDirectory); Console.WriteLine("\nGenerated Moai documentation in {0} format in '{1}'.", configuration.ExportFormat, outputDirectory.FullName); }
private static void Main(Configuration configuration) { IList <WarningType> ignoreTypes = new List <WarningType>(); if (configuration.Filter != null) { ignoreTypes = configuration.Filter .Select(f => Enum.TryParse <WarningType>(f, ignoreCase: true, result: out var warning) ? warning : (WarningType?)null).Where(x => x.HasValue).Select(x => x.Value).ToList(); if (ignoreTypes.Count != configuration.Filter.Count) { var validEnumValues = String.Join("\n\t", Enum.GetNames(typeof(WarningType))); Console.WriteLine($"There were invalid warning types specified\nValid values are: {validEnumValues}"); return; } Console.WriteLine("Ignoring Warning Types: " + String.Join(",", ignoreTypes)); } // Parse Moai code var parser = new MoaiParser(statusCallback: s => Console.WriteLine("[] {0}", s)); parser.Parse(new DirectoryInfo(configuration.InputDirectory)); // Show warnings Console.WriteLine(); var orderedWarnings = parser.Warnings.Where(x => !ignoreTypes.Contains(x.Type)) .OrderBy(warning => warning.Position.FileInfo.FullName).ToList(); foreach (var warning in orderedWarnings) { Console.WriteLine("[{0}]\t{1}\t[{2}]", warning.Position.ToString(configuration.PathsAsUri), warning.Message, warning.Type); } Console.WriteLine("\n{0} warnings.", orderedWarnings.Count); }