Skip to content

Commit 47df286

Browse files
authored
search for orphaned yaml files too (#474)
1 parent 29fd205 commit 47df286

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

cleanrepo/Program.cs

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,13 @@ static async Task RunOptions(Options options)
110110
{
111111
Console.WriteLine($"\nSearching the '{options.TargetDirectory}' directory and its subdirectories for orphaned articles...");
112112

113-
List<FileInfo> markdownFiles = HelperMethods.GetMarkdownFiles(options.TargetDirectory, "snippets");
113+
List<FileInfo> articleFiles = HelperMethods.GetMarkdownFiles(options.TargetDirectory, "snippets");
114+
articleFiles.AddRange(HelperMethods.GetYAMLFiles(options.TargetDirectory, "snippets"));
114115

115-
if (docFxRepo.AllTocFiles is null || markdownFiles is null)
116+
if (docFxRepo.AllTocFiles is null || articleFiles is null)
116117
return;
117118

118-
ListOrphanedArticles(docFxRepo.AllTocFiles, markdownFiles, options.Delete);
119+
ListOrphanedArticles(docFxRepo.AllTocFiles, articleFiles, options.Delete);
119120
break;
120121
}
121122
case "FindOrphanedImages":
@@ -1127,25 +1128,27 @@ private static void ListOrphanedSnippets(string inputDirectory,
11271128
/// <summary>
11281129
/// Lists the markdown files that aren't referenced from a TOC file.
11291130
/// </summary>
1130-
private static void ListOrphanedArticles(List<FileInfo> tocFiles, List<FileInfo> markdownFiles, bool deleteOrphanedTopics)
1131+
private static void ListOrphanedArticles(List<FileInfo> tocFiles, List<FileInfo> articleFiles, bool deleteOrphanedTopics)
11311132
{
1132-
Console.WriteLine($"Checking {markdownFiles.Count} Markdown files in {tocFiles.Count} TOC files.");
1133+
Console.WriteLine($"Checking {articleFiles.Count} Markdown/YAML files in {tocFiles.Count} TOC files.");
11331134

11341135
Dictionary<string, int> filesToKeep = [];
11351136

1136-
// Exclude certain Markdown files.
1137+
// Exclude certain files.
11371138
static bool IsArticleFile(FileInfo file) =>
11381139
!file.FullName.Contains($"{Path.DirectorySeparatorChar}includes{Path.DirectorySeparatorChar}") &&
11391140
!file.FullName.Contains($"{Path.DirectorySeparatorChar}misc{Path.DirectorySeparatorChar}") &&
11401141
!file.FullName.Contains($"{Path.DirectorySeparatorChar}mermaidjs{Path.DirectorySeparatorChar}") &&
1141-
string.Compare(file.Name, "TOC.md", StringComparison.InvariantCultureIgnoreCase) != 0 &&
1142-
string.Compare(file.Name, "index.md", StringComparison.InvariantCultureIgnoreCase) != 0;
1142+
string.Compare(file.Name, "toc.md", StringComparison.InvariantCultureIgnoreCase) != 0 &&
1143+
string.Compare(file.Name, "index.md", StringComparison.InvariantCultureIgnoreCase) != 0 &&
1144+
string.Compare(file.Name, "toc.yml", StringComparison.InvariantCultureIgnoreCase) != 0 &&
1145+
string.Compare(file.Name, "index.yml", StringComparison.InvariantCultureIgnoreCase) != 0;
11431146

11441147
List<FileInfo> orphanedFiles = [];
11451148

11461149
StringBuilder sb = new("\n");
11471150

1148-
Parallel.ForEach(markdownFiles.Where(IsArticleFile), markdownFile =>
1151+
Parallel.ForEach(articleFiles.Where(IsArticleFile), markdownFile =>
11491152
//foreach (var markdownFile in markdownFiles)
11501153
{
11511154
// Ignore TOC files.
@@ -1166,7 +1169,7 @@ static bool IsArticleFile(FileInfo file) =>
11661169
// Delete files if the option is set.
11671170
if (deleteOrphanedTopics)
11681171
{
1169-
Parallel.ForEach(markdownFiles, linkingFile =>
1172+
Parallel.ForEach(articleFiles, linkingFile =>
11701173
{
11711174
CheckFileLinks(orphanedFiles, linkingFile, ref filesToKeep);
11721175
});
@@ -1637,10 +1640,21 @@ public static List<FileInfo> GetMarkdownFiles(string directoryPath, params strin
16371640
/// <summary>
16381641
/// Gets all *.yml files recursively, starting in the specified directory.
16391642
/// </summary>
1640-
public static List<FileInfo> GetYAMLFiles(string directoryPath)
1643+
public static List<FileInfo> GetYAMLFiles(string directoryPath, params string[] dirsToIgnore)
16411644
{
16421645
DirectoryInfo dir = new(directoryPath);
1643-
return dir.EnumerateFiles("*.yml", SearchOption.AllDirectories).ToList();
1646+
IEnumerable<FileInfo> files = dir.EnumerateFiles("*.yml", SearchOption.AllDirectories).ToList();
1647+
1648+
if (dirsToIgnore.Length > 0)
1649+
{
1650+
foreach (string ignoreDir in dirsToIgnore)
1651+
{
1652+
string dirWithSeparators = $"{Path.DirectorySeparatorChar}{ignoreDir}{Path.DirectorySeparatorChar}";
1653+
files = files.Where(f => !f.DirectoryName!.Contains(dirWithSeparators, StringComparison.InvariantCultureIgnoreCase));
1654+
}
1655+
}
1656+
1657+
return files.ToList();
16441658
}
16451659

16461660
/// <summary>

0 commit comments

Comments
 (0)