@@ -110,12 +110,13 @@ static async Task RunOptions(Options options)
110
110
{
111
111
Console . WriteLine ( $ "\n Searching the '{ options . TargetDirectory } ' directory and its subdirectories for orphaned articles...") ;
112
112
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" ) ) ;
114
115
115
- if ( docFxRepo . AllTocFiles is null || markdownFiles is null )
116
+ if ( docFxRepo . AllTocFiles is null || articleFiles is null )
116
117
return ;
117
118
118
- ListOrphanedArticles ( docFxRepo . AllTocFiles , markdownFiles , options . Delete ) ;
119
+ ListOrphanedArticles ( docFxRepo . AllTocFiles , articleFiles , options . Delete ) ;
119
120
break ;
120
121
}
121
122
case "FindOrphanedImages" :
@@ -1127,25 +1128,27 @@ private static void ListOrphanedSnippets(string inputDirectory,
1127
1128
/// <summary>
1128
1129
/// Lists the markdown files that aren't referenced from a TOC file.
1129
1130
/// </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 )
1131
1132
{
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.") ;
1133
1134
1134
1135
Dictionary < string , int > filesToKeep = [ ] ;
1135
1136
1136
- // Exclude certain Markdown files.
1137
+ // Exclude certain files.
1137
1138
static bool IsArticleFile ( FileInfo file ) =>
1138
1139
! file . FullName . Contains ( $ "{ Path . DirectorySeparatorChar } includes{ Path . DirectorySeparatorChar } ") &&
1139
1140
! file . FullName . Contains ( $ "{ Path . DirectorySeparatorChar } misc{ Path . DirectorySeparatorChar } ") &&
1140
1141
! 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 ;
1143
1146
1144
1147
List < FileInfo > orphanedFiles = [ ] ;
1145
1148
1146
1149
StringBuilder sb = new ( "\n " ) ;
1147
1150
1148
- Parallel . ForEach ( markdownFiles . Where ( IsArticleFile ) , markdownFile =>
1151
+ Parallel . ForEach ( articleFiles . Where ( IsArticleFile ) , markdownFile =>
1149
1152
//foreach (var markdownFile in markdownFiles)
1150
1153
{
1151
1154
// Ignore TOC files.
@@ -1166,7 +1169,7 @@ static bool IsArticleFile(FileInfo file) =>
1166
1169
// Delete files if the option is set.
1167
1170
if ( deleteOrphanedTopics )
1168
1171
{
1169
- Parallel . ForEach ( markdownFiles , linkingFile =>
1172
+ Parallel . ForEach ( articleFiles , linkingFile =>
1170
1173
{
1171
1174
CheckFileLinks ( orphanedFiles , linkingFile , ref filesToKeep ) ;
1172
1175
} ) ;
@@ -1637,10 +1640,21 @@ public static List<FileInfo> GetMarkdownFiles(string directoryPath, params strin
1637
1640
/// <summary>
1638
1641
/// Gets all *.yml files recursively, starting in the specified directory.
1639
1642
/// </summary>
1640
- public static List < FileInfo > GetYAMLFiles ( string directoryPath )
1643
+ public static List < FileInfo > GetYAMLFiles ( string directoryPath , params string [ ] dirsToIgnore )
1641
1644
{
1642
1645
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 ( ) ;
1644
1658
}
1645
1659
1646
1660
/// <summary>
0 commit comments