public GenerateDocCommand( GenerateDocCommandLineOptions options, DocumentationDepth depth, RootDocumentationParts ignoredRootParts, NamespaceDocumentationParts ignoredNamespaceParts, TypeDocumentationParts ignoredTypeParts, MemberDocumentationParts ignoredMemberParts, IncludeContainingNamespaceFilter includeContainingNamespaceFilter, Visibility visibility, in ProjectFilter projectFilter) : base(projectFilter)
private static async Task <int> GenerateDocAsync(GenerateDocCommandLineOptions options) { if (options.MaxDerivedTypes < 0) { WriteLine("Maximum number of derived items must be equal or greater than 0.", Verbosity.Quiet); return(1); } if (!TryParseOptionValueAsEnum(options.Depth, ParameterNames.Depth, out DocumentationDepth depth, DocumentationOptions.Default.Depth)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredRootParts, ParameterNames.IgnoredRootParts, out RootDocumentationParts ignoredRootParts, DocumentationOptions.Default.IgnoredRootParts)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredNamespaceParts, ParameterNames.IgnoredNamespaceParts, out NamespaceDocumentationParts ignoredNamespaceParts, DocumentationOptions.Default.IgnoredNamespaceParts)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredTypeParts, ParameterNames.IgnoredTypeParts, out TypeDocumentationParts ignoredTypeParts, DocumentationOptions.Default.IgnoredTypeParts)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredMemberParts, ParameterNames.IgnoredMemberParts, out MemberDocumentationParts ignoredMemberParts, DocumentationOptions.Default.IgnoredMemberParts)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.IncludeContainingNamespace, ParameterNames.IncludeContainingNamespace, out IncludeContainingNamespaceFilter includeContainingNamespaceFilter, DocumentationOptions.Default.IncludeContainingNamespaceFilter)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.OmitMemberParts, ParameterNames.OmitMemberParts, out OmitMemberParts omitMemberParts, OmitMemberParts.None)) { return(1); } if (!TryParseOptionValueAsEnum(options.Visibility, ParameterNames.Visibility, out Visibility visibility)) { return(1); } if (!options.TryGetProjectFilter(out ProjectFilter projectFilter)) { return(1); } var command = new GenerateDocCommand( options, depth, ignoredRootParts, ignoredNamespaceParts, ignoredTypeParts, ignoredMemberParts, omitMemberParts, includeContainingNamespaceFilter, visibility, projectFilter); CommandResult result = await command.ExecuteAsync(options.Path, options.MSBuildPath, options.Properties); return((result.Kind == CommandResultKind.Success) ? 0 : 1); }
private static async Task <int> GenerateDocAsync(GenerateDocCommandLineOptions options) { if (options.MaxDerivedTypes < 0) { WriteLine("Maximum number of derived items must be equal or greater than 0.", Verbosity.Quiet); return(ExitCodes.Error); } if (!TryParseOptionValueAsEnum(options.Depth, OptionNames.Depth, out DocumentationDepth depth, DocumentationOptions.Default.Depth)) { return(ExitCodes.Error); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredRootParts, OptionNames.IgnoredRootParts, out RootDocumentationParts ignoredRootParts, DocumentationOptions.Default.IgnoredRootParts)) { return(ExitCodes.Error); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredNamespaceParts, OptionNames.IgnoredNamespaceParts, out NamespaceDocumentationParts ignoredNamespaceParts, DocumentationOptions.Default.IgnoredNamespaceParts)) { return(ExitCodes.Error); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredTypeParts, OptionNames.IgnoredTypeParts, out TypeDocumentationParts ignoredTypeParts, DocumentationOptions.Default.IgnoredTypeParts)) { return(ExitCodes.Error); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredMemberParts, OptionNames.IgnoredMemberParts, out MemberDocumentationParts ignoredMemberParts, DocumentationOptions.Default.IgnoredMemberParts)) { return(ExitCodes.Error); } if (!TryParseOptionValueAsEnumFlags(options.IncludeContainingNamespace, OptionNames.IncludeContainingNamespace, out IncludeContainingNamespaceFilter includeContainingNamespaceFilter, DocumentationOptions.Default.IncludeContainingNamespaceFilter)) { return(ExitCodes.Error); } if (!TryParseOptionValueAsEnumFlags(options.OmitMemberParts, OptionNames.OmitMemberParts, out OmitMemberParts omitMemberParts, OmitMemberParts.None)) { return(ExitCodes.Error); } if (!TryParseOptionValueAsEnum(options.Visibility, OptionNames.Visibility, out Visibility visibility)) { return(ExitCodes.Error); } if (!options.TryGetProjectFilter(out ProjectFilter projectFilter)) { return(ExitCodes.Error); } if (!TryParsePaths(options.Path, out ImmutableArray <string> paths)) { return(ExitCodes.Error); } var command = new GenerateDocCommand( options, depth, ignoredRootParts, ignoredNamespaceParts, ignoredTypeParts, ignoredMemberParts, omitMemberParts, includeContainingNamespaceFilter, visibility, projectFilter); CommandStatus status = await command.ExecuteAsync(paths, options.MSBuildPath, options.Properties); return(GetExitCode(status)); }
private static int GenerateDoc(GenerateDocCommandLineOptions options) { if (options.MaxDerivedTypes < 0) { WriteLine("Maximum number of derived items must be equal or greater than 0.", ConsoleColor.Red, Verbosity.Quiet); return(1); } if (!TryParseIgnoredRootParts(options.IgnoredRootParts, out RootDocumentationParts ignoredRootParts)) { return(1); } if (!TryParseIgnoredNamespaceParts(options.IgnoredNamespaceParts, out NamespaceDocumentationParts ignoredNamespaceParts)) { return(1); } if (!TryParseIgnoredTypeParts(options.IgnoredTypeParts, out TypeDocumentationParts ignoredTypeParts)) { return(1); } if (!TryParseIgnoredMemberParts(options.IgnoredMemberParts, out MemberDocumentationParts ignoredMemberParts)) { return(1); } if (!TryParseOmitContainingNamespaceParts(options.OmitContainingNamespaceParts, out OmitContainingNamespaceParts omitContainingNamespaceParts)) { return(1); } if (!TryParseVisibility(options.Visibility, out Visibility visibility)) { return(1); } DocumentationModel documentationModel = CreateDocumentationModel(options.References, options.Assemblies, visibility, options.AdditionalXmlDocumentation); if (documentationModel == null) { return(1); } var documentationOptions = new DocumentationOptions( ignoredNames: options.IgnoredNames, preferredCultureName: options.PreferredCulture, maxDerivedTypes: options.MaxDerivedTypes, includeClassHierarchy: !options.NoClassHierarchy, placeSystemNamespaceFirst: !options.NoPrecedenceForSystem, formatDeclarationBaseList: !options.NoFormatBaseList, formatDeclarationConstraints: !options.NoFormatConstraints, markObsolete: !options.NoMarkObsolete, includeMemberInheritedFrom: !options.OmitMemberInheritedFrom, includeMemberOverrides: !options.OmitMemberOverrides, includeMemberImplements: !options.OmitMemberImplements, includeMemberConstantValue: !options.OmitMemberConstantValue, includeInheritedInterfaceMembers: options.IncludeInheritedInterfaceMembers, includeAllDerivedTypes: options.IncludeAllDerivedTypes, includeAttributeArguments: !options.OmitAttributeArguments, includeInheritedAttributes: !options.OmitInheritedAttributes, omitIEnumerable: !options.IncludeIEnumerable, depth: options.Depth, inheritanceStyle: options.InheritanceStyle, ignoredRootParts: ignoredRootParts, ignoredNamespaceParts: ignoredNamespaceParts, ignoredTypeParts: ignoredTypeParts, ignoredMemberParts: ignoredMemberParts, omitContainingNamespaceParts: omitContainingNamespaceParts, scrollToContent: options.ScrollToContent); var generator = new MarkdownDocumentationGenerator(documentationModel, WellKnownUrlProviders.GitHub, documentationOptions); string directoryPath = options.OutputPath; if (!options.NoDelete && Directory.Exists(directoryPath)) { try { Directory.Delete(directoryPath, recursive: true); } catch (IOException ex) { WriteLine(ex.ToString(), ConsoleColor.Red, Verbosity.Quiet); return(1); } } var cts = new CancellationTokenSource(); Console.CancelKeyPress += (sender, e) => { e.Cancel = true; cts.Cancel(); }; CancellationToken cancellationToken = cts.Token; WriteLine($"Documentation is being generated to '{options.OutputPath}'", Verbosity.Minimal); foreach (DocumentationGeneratorResult documentationFile in generator.Generate(heading: options.Heading, cancellationToken)) { string path = Path.Combine(directoryPath, documentationFile.FilePath); Directory.CreateDirectory(Path.GetDirectoryName(path)); WriteLine($" Save '{path}'", ConsoleColor.DarkGray, Verbosity.Detailed); File.WriteAllText(path, documentationFile.Content, _defaultEncoding); } WriteLine($"Documentation successfully generated to '{options.OutputPath}'.", Verbosity.Minimal); return(0); }