private void ValidateHelpMarkdown(string helpFolder, IList <string> helpRecords, ReportLogger <HelpIssue> helpLogger) { foreach (var helpMarkdown in helpRecords) { var file = Path.Combine(helpFolder, helpMarkdown + ".md"); var content = File.ReadAllText(file); try { var parser = new MarkdownParser(); var transformer = new ModelTransformerVersion2(); var markdownModel = parser.ParseString(new[] { content }); var model = transformer.NodeModelToMamlModel(markdownModel).FirstOrDefault(); } catch (Exception ex) { HelpIssue issue = new HelpIssue { Target = helpMarkdown, Severity = 1, ProblemId = PlatyPSSchemaViolation, Description = "Help content doesn't conform to PlatyPS Schema definition", Remediation = string.Format("No.") }; helpLogger.LogRecord(issue); Console.Error.WriteLine($"Failed to parse {file} by PlatyPS, {ex.Message}"); } } }
private void ValidateHelpRecords(IList <CmdletMetadata> cmdlets, IList <string> helpRecords, ReportLogger <HelpIssue> helpLogger) { var cmdletDict = new Dictionary <string, CmdletMetadata>(); foreach (var cmdlet in cmdlets) { cmdletDict.Add(cmdlet.Name, cmdlet); if (!helpRecords.Contains(cmdlet.Name, StringComparer.OrdinalIgnoreCase)) { HelpIssue issue = new HelpIssue { Target = cmdlet.ClassName, Severity = 1, ProblemId = MissingHelp, Remediation = string.Format("Add Help record for cmdlet {0} to help file.", cmdlet.Name) }; if (cmdlet.ClassName != null) { issue.Description = $"Help missing for cmdlet {cmdlet.Name} implemented by class {cmdlet.ClassName}"; } else { issue.Description = $"Help missing for cmdlet {cmdlet.Name} implemented by functions"; } helpLogger.LogRecord(issue); } } foreach (var helpRecord in helpRecords) { if (!cmdletDict.ContainsKey(helpRecord)) { Console.Error.WriteLine($"Help record {helpRecord} has no cmdlet."); } } }