예제 #1
0
        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");
        }