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); }
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 }); }
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); }
/// <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); }
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); } } }
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); } } }