--- /dev/null
+<(common.inc.plp)><:
+
+Html({
+ title => 'cli cheat sheet',
+ version => '1.0',
+ description => [],
+ keywords => [qw'
+ '],
+ data => ['data/cli.inc.pl'],
+});
+
+my $cmd = do 'data/cli.inc.pl'
+ or Abort("Error loading program data", 501, $@ // $!);
+:>
+<h1>CLI options</h1>
+
+<style>
+ tbody td {font-size:70%}
+</style>
+<:
+sub showoption {
+ my ($info, $char, $span) = @_;
+ my ($alias, $help) = @{ $info // [] };
+ printf '<td class="l%s"', $info ? 5 : 1;
+ print ' rowspan="2"' if $span;
+ print '>';
+ $info or return;
+ my ($title) = $alias =~ m{--([\w-]+=?)}
+ or return print $char;
+ $title =~ s/-\K/<wbr>/g;
+ $title =~ s/deref\Kerence/./;
+ print $title;
+}
+
+my @colchars = ('a'..'z', '?');
+print '<table class="ccmap"><col>';
+print qq'<colgroup span="$_">' for scalar @colchars;
+#say '</colgroup><col>';
+for my $section (qw{thead tfoot}) {
+ print "<$section><tr><th>↳";
+ print '<th>', EscapeHTML($_) for @colchars;
+ say '';
+}
+print '<tbody>';
+for my $name (sort keys %$cmd) {
+ my $row = $cmd->{$name};
+ print '<tr><th rowspan="2">', $name;
+ showoption($row->{$_}, $_, !$row->{uc $_}) for @colchars;
+ print "\n\t<tr>";
+ $row->{$_} and showoption($row->{$_}, $_) for map {uc} @colchars;
+}
+say '</table>';
+:>
+
+<div class="legend">
+ <table class="glyphs"><tr>
+ <td class="X l5">supported
+ <td class="X l1">unsupported
+ <td class="X l0 ex">alias
+ </table>
+</div>