private static void Run(ApplicationArguments options) { if (options.InputDirectory == null) { options.InputDirectory = Directory.GetCurrentDirectory(); } var input = options.InputDirectory; var output = options.OutputDirectory; if (!Directory.Exists(output)) { Directory.CreateDirectory(output); } if (!Directory.Exists(input)) { Fatal("The specified directory does not exist"); } Info($"Loading code from '{input}'"); var nodes = CompilationUnits.FromFolder(input); if (!nodes.Any()) { Fatal($"No source files found in {input}"); } var sourceInfo = new SourceInfo(nodes.ToList()); Info("Creating documentation tree"); var entities = sourceInfo.WithVisibility(modifiers: Modifier.Public); File.WriteAllText(Path.Combine(output, "structure.json"), entities.AsJson()); var format = options.Format; Info("Writing documentation files"); format.BeginWritingAt(output) .IncludePreface(entities, "README", options) .Write(entities, new[] { Modifier.Public }); Success($"Generated {entities.Descendants().Count()} documentation files"); }