diff options
Diffstat (limited to 'todos.pl')
| -rw-r--r-- | todos.pl | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/todos.pl b/todos.pl new file mode 100644 index 0000000..c1c6368 --- /dev/null +++ b/todos.pl @@ -0,0 +1,31 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use File::Find; + +my $root = $ARGV[0] // '.'; +my @files; + +find(sub { + $File::Find::prune = 1 if -d && /^(_build|\.git)$/; + push @files, $File::Find::name if /\.ml(i|l)?$/ && -f; +}, $root); + +my $count = 0; +for my $file (sort @files) { + open my $fh, '<', $file or die "Cannot open $file: $!"; + my $lineno = 0; + while (<$fh>) { + $lineno++; + if (/\bTODO\b[:\s]*(.*)/) { + my $msg = $1; + $msg =~ s/\s*\*\)\s*$//; # strip OCaml comment close + $msg =~ s/^\s+|\s+$//g; + printf "%-60s line %-4d %s\n", $file, $lineno, $msg; + $count++; + } + } + close $fh; +} + +print "\n$count TODO(s) found.\n"; |
