#!/usr/bin/env raku # check the header links in docs/ops.markdown # could be converted to a doc test, but needs some work my %heads; my %links; for "docs/ops.markdown".IO.slurp.lines -> $line { if $line ~~ /^ ' * [' (.+) '](#' (.+) ')'/ { %heads{~$/[0]} = ~$/[1]; } elsif $line ~~ /^ '## ' (.*) / { my $a = ~$/[0].trim; next unless $a; $a = $a.subst(/ (' '|'`')+ /, '-', :global); $a ~~ s/ '-' $//; %links{$a}=1; } } for %heads.kv -> $k, $v { next if %links{$v}; say "HEADER NO LINK: $k, $v" } my %tags = %heads.invert; for %links.kv -> $k, $v { next if %tags{$k}; say "LINK NO HEADER: $k, $v"; }