public int Generate(IArticleSaver saver) { var articleCount = 0; foreach (var package in _lib.Packages) { articleCount += ProcessModule(package, saver); } return(articleCount); }
public int Generate(IArticleSaver saver) { _logger?.LogInformation($"Processing assemblies in {_srcPath}..."); LoadLibraryTypes(); var dest = Directory.GetCurrentDirectory(); int articleCount = 0; foreach (var g in _types.GroupBy(x => x.Namespace).OrderBy(x => x.Key)) { string sectionName = g.Key + " namespace"; foreach (var item in g.OrderBy(x => x.Name).Distinct(new MarkdownableTypeEqualityComparer())) { SetLinks(item, _types, _aistantSettings.Kb, _aistantSettings.Section.Uri, _aistantSettings.Team); string itemName = item.GetNameWithKind(); string itemString = item.ToString(); string itemSummary = item.GetSummary(); bool ok = saver.SaveArticle(new ArticleSaveModel { SectionTitle = sectionName, SectionUri = sectionName.MakeUriFromString(), ArticleTitle = itemName, ArticleUri = itemName.MakeUriFromString(), ArticleBody = itemString, ArticleExcerpt = itemSummary }); if (ok) { articleCount++; } } articleCount++; } return(articleCount); }
static void Main(string[] args) { System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); Console.WriteLine($"aistdoc utility {assembly.GetName().Version.ToString()} (c) Aistant 2018"); Console.WriteLine("Current folder: " + Directory.GetCurrentDirectory()); var loggerFactory = new LoggerFactory(); var logger = loggerFactory.AddConsole() .CreateLogger("AistDoc"); var startTime = DateTime.UtcNow; try { var dest = Directory.GetCurrentDirectory(); var result = ReadArgs(args); if (!result) { return; } var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()); if (string.IsNullOrEmpty(_configFilePath)) { GenerateDefaultConfig("aistdoc.json", "cs"); throw new FileNotFoundException("Config file is required"); } Console.WriteLine($"Reading config: {_configFilePath} ..."); try { builder.AddJsonFile(_configFilePath); } catch (FileNotFoundException ex) { GenerateDefaultConfig(_configFilePath, "cs"); throw ex; } var configuration = builder.Build(); var aistantSettings = configuration.GetSection("aistant").Get <AistantSettings>(); IArticleSaver saver = null; if (!string.IsNullOrEmpty(_outputPath)) { saver = new FileSaver(_outputPath, logger); } else { saver = new AistantSaver(aistantSettings, logger); } var mode = configuration["source:mode"].ToString(); IDocGenerator generator; if (mode == "typescript") { generator = new TypeScriptDocGenerator(configuration); } else { generator = new CSharpDocGenerator(configuration, logger, _outputPath); } var articleCount = generator.Generate(saver); logger.LogInformation("Done! " + $"{articleCount} documents added or updated"); } catch (Exception ex) { logger.LogCritical(ex.Message); } logger.LogInformation("Time Elapsed : " + (DateTime.UtcNow - startTime)); Thread.Sleep(100); }
private int ProcessModule(ITypeScriptModule module, IArticleSaver saver, string parentSectionUrl = null) { var articleCount = 0; var sectionName = module.BeautifulName; var sectionUrl = sectionName.MakeUriFromString(); var fullSectionUrl = (parentSectionUrl != null) ? parentSectionUrl.CombineWithUri(sectionUrl) : sectionUrl; var enums = module.Enumerations.Where(e => e.IsExported).ToList(); var classes = module.Classes.Where(c => c.IsExported).ToList(); var interfaces = module.Interfaces.Where(i => i.IsExported).ToList(); var functions = module.Functions.Where(f => f.IsExported).ToList(); var variables = module.Variables.Where(v => v.IsExported).ToList(); var nspaces = module.Namespaces.Where(n => n.IsExported).ToList(); if (enums.Any() || classes.Any() || interfaces.Any() || functions.Any() || variables.Any()) { var parentSection = new ArticleSaveModel { SectionUri = parentSectionUrl, ArticleTitle = sectionName, ArticleUri = sectionUrl, ArticleExcerpt = module.Comment?.ShortText, ArticleBody = module.Comment?.ShortText ?? "", IsSection = true }; //Create section for package/namespace if (saver.SaveArticle(parentSection)) { articleCount++; } foreach (var nspace in nspaces) { articleCount += ProcessModule(nspace, saver, fullSectionUrl); } if (enums.Any()) { var section = new ArticleSaveModel { SectionTitle = sectionName, SectionUri = fullSectionUrl, ArticleTitle = "Enumerations", ArticleUri = "enumerations", IsSection = true }; //Create section for package/namespace if (saver.SaveArticle(section)) { articleCount++; } //Processing Enumerations foreach (var @enum in enums) { var itemName = @enum.BeautifulName; var itemSummary = @enum.Comment?.ShortText; var itemContent = BuildContent(@enum); var articleSaveModel = new ArticleSaveModel { SectionTitle = section.ArticleTitle, SectionUri = fullSectionUrl.CombineWithUri(section.ArticleUri), ArticleTitle = itemName, ArticleUri = itemName.MakeUriFromString(), ArticleExcerpt = itemSummary, ArticleBody = itemContent }; if (saver.SaveArticle(articleSaveModel)) { articleCount++; } } } if (interfaces.Any()) { var section = new ArticleSaveModel { SectionTitle = sectionName, SectionUri = fullSectionUrl, ArticleTitle = "Interfaces", ArticleUri = "interfaces", IsSection = true }; //Create section for interfaces if (saver.SaveArticle(section)) { articleCount++; } //Processing Interfaces foreach (var @interface in interfaces) { var itemName = @interface.BeautifulName; var itemSummary = @interface.Comment?.ShortText; var itemContent = BuildContent(@interface); var articleSaveModel = new ArticleSaveModel { SectionTitle = section.ArticleTitle, SectionUri = fullSectionUrl.CombineWithUri(section.ArticleUri), ArticleTitle = itemName, ArticleUri = itemName.MakeUriFromString(), ArticleExcerpt = itemSummary, ArticleBody = itemContent }; if (saver.SaveArticle(articleSaveModel)) { articleCount++; } } } if (classes.Any()) { var section = new ArticleSaveModel { SectionTitle = sectionName, SectionUri = fullSectionUrl, ArticleTitle = "Classes", ArticleUri = "classes", IsSection = true }; //Create section for interfaces if (saver.SaveArticle(section)) { articleCount++; } //Processing Classes foreach (var @class in classes) { var itemName = @class.BeautifulName; var itemSummary = @class.Comment?.ShortText; var itemContent = BuildContent(@class); var articleSaveModel = new ArticleSaveModel { SectionTitle = section.ArticleTitle, SectionUri = fullSectionUrl.CombineWithUri(section.ArticleUri), ArticleTitle = itemName, ArticleUri = itemName.MakeUriFromString(), ArticleExcerpt = itemSummary, ArticleBody = itemContent }; if (saver.SaveArticle(articleSaveModel)) { articleCount++; } } } if (functions.Any()) { var articleSaveModel = new ArticleSaveModel { SectionTitle = sectionName, SectionUri = fullSectionUrl, ArticleTitle = "Functions", ArticleUri = "functions", ArticleBody = BuildContent(functions) }; if (saver.SaveArticle(articleSaveModel)) { articleCount++; } } if (variables.Any()) { var articleSaveModel = new ArticleSaveModel { SectionTitle = sectionName, SectionUri = fullSectionUrl, ArticleTitle = "Variables", ArticleUri = "Variables", ArticleBody = BuildContent(variables) }; if (saver.SaveArticle(articleSaveModel)) { articleCount++; } } } return(articleCount); }