revbank/plugins/help
Juerd Waalboer fa60e1081a chmod 644 plugins/*
Undoes 714b337 because github seems to no longer require chmod +x
for syntax highlighting extensionless files.
2019-08-07 15:42:16 +02:00

58 lines
1.7 KiB
Perl

#!perl
HELP "help" => "The stuff you're looking at right now :)";
use List::Util qw(max);
my $bold = "\e[1m";
my $underline = "\e[4m";
my $off = "\e[0m";
sub command :Tab(help,wtf,omgwtfbbq) {
my ($self, $cart, $command) = @_;
return NEXT if $command !~ /^(?:help|wtf|omgwtfbbq)$/;
# GNU less(1) and more(1) are a bad choice to present to total newbies who
# might have no interest in learning to use these surprisingly powerful
# tools, so I will not accepting patches to use either of those, or to use
# the PAGER environment variable (because that will typically be set to
# either one of those by default). For example, typing "v" will excute
# vi...
# On the other hand, busybox(1) has a "more" applet that gives the user
# clear instructions and seems mostly harmless too.
my $pipe;
if (open $pipe, "|-", "busybox", "more") {
select $pipe;
}
say "\n${bold}Valid commands:${off}";
my $width = max(map length s/[<>]//rg, keys %::HELP);
for my $command (sort keys %::HELP) {
my $display = $command;
my $length = length $display =~ s/[<>]//rg;
$display =~ s/</$underline/g;
$display =~ s/>/$off/g;
# Because of markup codes, a simple %-42s doesn't work.
$display .= " " x ($width - $length);
say sprintf " %s %s", $display, $::HELP{$command};
}
print <<"END";
${bold}Simple usage: ${off} press <Enter> after a command for follow-up prompts
${bold}Advanced usage:${off} pass space separated arguments to parameters
Complete each transaction with ${underline}account${off} (i.e. enter your name).
END
select STDOUT;
close $pipe;
return ACCEPT;
}