scripts/documentation-file-ref-check: detect broken :doc:`foo`
authorMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 24 Apr 2019 16:25:33 +0000 (13:25 -0300)
committerJonathan Corbet <corbet@lwn.net>
Fri, 3 May 2019 12:45:22 +0000 (06:45 -0600)
As we keep migrating documents to ReST, we're starting to see
more of such tags.

Right now, all such tags are pointing to a documentation file,
but regressions may be introduced.

So, add a check for such kind of issues as well.

Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
scripts/documentation-file-ref-check

index bd7d9ab..63e9542 100755 (executable)
@@ -30,6 +30,34 @@ print "Finding broken references. This may take a while...  " if ($fix);
 
 my %broken_ref;
 
+my $doc_fix = 0;
+
+open IN, "git grep ':doc:\`' Documentation/|"
+     or die "Failed to run git grep";
+while (<IN>) {
+       next if (!m,^([^:]+):.*\:doc\:\`([^\`]+)\`,);
+
+       my $d = $1;
+       my $doc_ref = $2;
+
+       my $f = $doc_ref;
+
+       $d =~ s,(.*/).*,$1,;
+       $f =~ s,.*\<([^\>]+)\>,$1,;
+
+       $f ="$d$f.rst";
+
+       next if (grep -e, glob("$f"));
+
+       if ($fix && !$doc_fix) {
+               print STDERR "\nWARNING: Currently, can't fix broken :doc:`` fields\n";
+       }
+       $doc_fix++;
+
+       print STDERR "$f: :doc:`$doc_ref`\n";
+}
+close IN;
+
 open IN, "git grep 'Documentation/'|"
      or die "Failed to run git grep";
 while (<IN>) {
@@ -103,6 +131,7 @@ while (<IN>) {
                }
        }
 }
+close IN;
 
 exit 0 if (!$fix);