Exemplo n.º 1
0
        public override bool Execute(string[] arguments)
        {
            var parameters = new AssemblyDocumentParameters();

            if (!ArgumentParser.ParseArguments(arguments, parameters))
            {
                return(false);
            }

            FolderLock.ExitIfFolderIsLocked(parameters.OutputDirectory.ToString(), CurrentState.Log);

            using (var l = new FolderLock(parameters.OutputDirectory.ToString()))
            {
                XmlDocMarkdownGenerator.Generate(parameters.AssemblyPath.ToString(),
                                                 parameters.OutputDirectory.ToString(),
                                                 new XmlDocMarkdownSettings
                {
                    IsQuiet         = true,
                    ShouldClean     = true,
                    VisibilityLevel = XmlDocVisibilityLevel.Protected,
                    SkipUnbrowsable = true,
                });
            }

            return(true);
        }
Exemplo n.º 2
0
 public void ExampleAssembly()
 {
     XmlDocMarkdownGenerator.Generate(
         typeof(ExampleClass).GetTypeInfo().Assembly.Location,
         Path.Combine(Path.GetTempPath(), "MarkdownGeneratorTests"),
         new XmlDocMarkdownSettings {
         IsDryRun = true
     });
 }
 public void FSharpWithNulls()
 {
     XmlDocMarkdownGenerator.Generate(
         typeof(ExtensionMethods.Augment).GetTypeInfo().Assembly.Location,
         Path.Combine(Path.GetTempPath(), "MarkdownGeneratorTests"),
         new XmlDocMarkdownSettings {
         IsDryRun = true
     });
 }
Exemplo n.º 4
0
        public static XmlDocMarkdownResult XmlDocMarkdownGenerate(this ICakeContext context, string inputPath, string outputPath, XmlDocMarkdownSettings settings = null)
        {
            var result = XmlDocMarkdownGenerator.Generate(inputPath, outputPath, settings);

            foreach (var message in result.Messages)
            {
                context?.Log.Write(Verbosity.Normal, LogLevel.Information, message);
            }
            return(result);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Creates the generate command.
        /// </summary>
        private static Command CreateGenerateCommand()
        {
            var pathArg = new Argument <string>("path", $"Path to the assembly (*.dll) to generate documentation.")
            {
                HelpName = "PATH"
            };

            var outputOption = new Option <string>(
                name: "-o",
                description: "The output path.")
            {
                ArgumentHelpName = "OUTPUT"
            };

            var namespaceOption = new Option <string>(
                name: "--namespace",
                description: "The root namespace of the input assembly.")
            {
                ArgumentHelpName = "NAMESPACE"
            };

            // Add validators.
            pathArg.AddValidator(result => ValidateArgumentValueIsExpectedFile(result, ".dll"));

            // Build command.
            var command = new Command("gen", "Generate the documentation.");

            command.AddArgument(pathArg);
            command.AddOption(outputOption);
            command.AddOption(namespaceOption);
            command.TreatUnmatchedTokensAsErrors = true;

            command.SetHandler((string assembly, string output, string name) =>
            {
                var settings = new XmlDocMarkdownSettings()
                {
                    GenerateToc     = true,
                    TocPrefix       = "ref",
                    RootNamespace   = name,
                    VisibilityLevel = XmlDocVisibilityLevel.Protected,
                    ShouldClean     = true,
                    SkipUnbrowsable = true,
                    NamespacePages  = true
                };

                XmlDocMarkdownGenerator.Generate(assembly, output, settings);
            }, pathArg, outputOption, namespaceOption);

            return(command);
        }
Exemplo n.º 6
0
        public int Run(IReadOnlyList <string> args)
        {
            try
            {
                var argsReader = new ArgsReader(args);
                if (argsReader.ReadHelpFlag())
                {
                    WriteUsage(Console.Out);
                    return(0);
                }

                bool isVerify = argsReader.ReadVerifyFlag();

                var settings = new XmlDocMarkdownSettings();
                settings.NewLine         = argsReader.ReadNewLineOption();
                settings.SourceCodePath  = argsReader.ReadSourceOption();
                settings.RootNamespace   = argsReader.ReadNamespaceOption();
                settings.IncludeObsolete = argsReader.ReadObsoleteFlag();
                settings.SkipUnbrowsable = argsReader.ReadSkipUnbrowsableFlag();
                settings.VisibilityLevel = argsReader.ReadVisibilityOption();
                settings.ShouldClean     = argsReader.ReadCleanFlag();
                settings.IsQuiet         = argsReader.ReadQuietFlag();
                settings.IsDryRun        = isVerify || argsReader.ReadDryRunFlag();
                settings.FrontMatter     = argsReader.ReadFrontMatter();
                settings.PermalinkStyle  = argsReader.ReadPermalinkStyle();
                settings.GenerateToc     = argsReader.ReadGeneratyeTocFlag();
                settings.TocPrefix       = argsReader.ReadTocPrefix();
                settings.NamespacePages  = argsReader.ReadNamespacePageFlag();

                var    externalDocs = new List <ExternalDocumentation>();
                string externalOption;
                while ((externalOption = argsReader.ReadExternalOption()) != null)
                {
                    externalDocs.Add(new ExternalDocumentation {
                        Namespace = externalOption
                    });
                }
                if (externalDocs.Count != 0)
                {
                    settings.ExternalDocs = externalDocs;
                }

                string inputPath = argsReader.ReadArgument();
                if (inputPath == null)
                {
                    throw new ArgsReaderException("Missing input path.");
                }

                string outputPath = argsReader.ReadArgument();
                if (outputPath == null)
                {
                    throw new ArgsReaderException("Missing output path.");
                }

                argsReader.VerifyComplete();

                var result = XmlDocMarkdownGenerator.Generate(inputPath, outputPath, settings);

                foreach (string message in result.Messages)
                {
                    Console.WriteLine(message);
                }

                return(isVerify && result.Added.Count + result.Changed.Count + result.Removed.Count != 0 ? 1 : 0);
            }
            catch (Exception exception)
            {
                if (exception is ArgsReaderException)
                {
                    Console.Error.WriteLine(exception.Message);
                    Console.Error.WriteLine();
                    WriteUsage(Console.Error);
                    return(2);
                }
                else if (exception is ApplicationException || exception is IOException || exception is UnauthorizedAccessException)
                {
                    Console.Error.WriteLine(exception.Message);
                    return(3);
                }
                else
                {
                    Console.Error.WriteLine(exception.ToString());
                    return(3);
                }
            }
        }
Exemplo n.º 7
0
        public int Run(IReadOnlyList <string> args)
        {
            try
            {
                var argsReader = new ArgsReader(args);
                if (argsReader.ReadHelpFlag())
                {
                    WriteUsage(Console.Out);
                    return(0);
                }

                bool isVerify = argsReader.ReadVerifyFlag();

                var settings = new XmlDocMarkdownSettings();

                string settingsPath = argsReader.ReadSettingsOption();
                if (settingsPath != null)
                {
                    settings = JsonConvert.DeserializeObject <XmlDocMarkdownSettings>(
                        File.ReadAllText(settingsPath),
                        new JsonSerializerSettings {
                        DateParseHandling = DateParseHandling.None
                    });
                    if (settings == null)
                    {
                        throw new ApplicationException("Failed to load settings file.");
                    }
                }

                settings.NewLine         = argsReader.ReadNewLineOption() ?? settings.NewLine;
                settings.SourceCodePath  = argsReader.ReadSourceOption() ?? settings.SourceCodePath;
                settings.RootNamespace   = argsReader.ReadNamespaceOption() ?? settings.RootNamespace;
                settings.IncludeObsolete = argsReader.ReadObsoleteFlag() || settings.IncludeObsolete;
                settings.VisibilityLevel = argsReader.ReadVisibilityOption() ?? settings.VisibilityLevel;
                settings.ShouldClean     = argsReader.ReadCleanFlag() || settings.ShouldClean;
                settings.IsQuiet         = argsReader.ReadQuietFlag() || settings.IsQuiet;
                settings.IsDryRun        = isVerify || argsReader.ReadDryRunFlag() || settings.IsDryRun;

                string inputPath = argsReader.ReadArgument();
                if (inputPath == null)
                {
                    throw new ArgsReaderException("Missing input path.");
                }

                string outputPath = argsReader.ReadArgument();
                if (outputPath == null)
                {
                    throw new ArgsReaderException("Missing output path.");
                }

                argsReader.VerifyComplete();

                var result = XmlDocMarkdownGenerator.Generate(inputPath, outputPath, settings);

                foreach (string message in result.Messages)
                {
                    Console.WriteLine(message);
                }

                return(isVerify && result.Added.Count + result.Changed.Count + result.Removed.Count != 0 ? 1 : 0);
            }
            catch (Exception exception)
            {
                if (exception is ArgsReaderException)
                {
                    Console.Error.WriteLine(exception.Message);
                    Console.Error.WriteLine();
                    WriteUsage(Console.Error);
                    return(2);
                }
                else if (exception is ApplicationException || exception is IOException || exception is UnauthorizedAccessException || exception is JsonException)
                {
                    Console.Error.WriteLine(exception.Message);
                    return(3);
                }
                else
                {
                    Console.Error.WriteLine(exception.ToString());
                    return(3);
                }
            }
        }