diff options
Diffstat (limited to '')
-rwxr-xr-x | website | 92 | ||||
-rwxr-xr-x | website.pl | 63 |
2 files changed, 92 insertions, 63 deletions
@@ -0,0 +1,92 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i perl -p perl less nix --pure -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-18.09.tar.gz + +=head1 NAME + +website - Website repository CLI manager. + +=head1 SYNOPSIS + +website <subcommand> [options] + + Subcommands: + pastebin Create a new pastebin from the org-mode template. + slides Create a new HTML slideshow from the existing templates. + test Run internal CLI tests. + + Options: + --help Show the manpage. + +=head1 OPTIONS + +=over 4 + +=item B<-h, --help> + +Prints the manual page and exits. + +=back + +=head1 DESCRIPTION + +B<website> is the top-level coordinator of subtasks inside the website repo. + +=cut + +use strict; +use warnings; +use Getopt::Long qw(:config no_ignore_case bundling pass_through); +use Pod::Usage qw(pod2usage); + +my $help = 0; +my $title = ''; +sub getopts { + GetOptions( + 'help|h|?' => \$help + ); +} + +sub test { + die "FIXME"; +} + +sub dispatch { + my $action = shift; + my @args = @_; + my @sub_args = grep { $_ ne $action } @args; + if (!defined $action && $help) { + pod2usage( + -verbose => 2, + -exitval => 0 + ); + } elsif (!defined $action) { + print "Missing subcomand.\n"; + pod2usage( + -verbose => 1, + -exitval => 2 + ); + } elsif ($action eq 'pastebin') { + print `./pastebin/website-pastebin @sub_args`; + exit $? >> 8; + } elsif ($action eq 'slides') { + print `./pastebin/website-slides @sub_args`; + exit $? >> 8; + } elsif ($action eq 'test') { + test(); + } else { + print "Unknown subcommand: $action.\n"; + pod2usage( + -verbose => 1, + -exitval => 2 + ); + } +} + +sub main { + my @orig_args=@ARGV; + getopts(); + my $action=shift @ARGV; + dispatch($action, @orig_args); +} + +main(); diff --git a/website.pl b/website.pl deleted file mode 100755 index cb81ff3..0000000 --- a/website.pl +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i perl -p perl less --pure - -=head1 NAME - -cli.pl - Using GetOpt::Long and Pod::Usage - -=head1 SYNOPSIS - -sample [options] [file ...] - - Options: - --help brief help message - --man full documentation - -=head1 OPTIONS - -=over 4 - -=item B<-h, --help> - -Print a brief help message and exits. - -=item B<--man> - -Prints the manual page and exits. - -=back - -=head1 DESCRIPTION - -B<This program> will read the given input file(s) and do something -useful with the contents thereof. - -=cut - -use strict; -use warnings; -use Getopt::Long qw(:config no_ignore_case bundling auto_help auto_version); -use Pod::Usage qw(pod2usage); - -my $help = 0; -my $title = ''; -GetOptions( - "t|title=s" => \$title, - 'help|h|?' => \$help -) or pod2usage(-verbose => 1); -pod2usage( - -verbose => 2, - -exitval => 0 -) if $help || (defined $ARGV[0] and $ARGV[0] eq "help"); - -## If no arguments were given, then allow STDIN to be used only -## if it's not connected to a terminal (otherwise print usage) -pod2usage("$0: No files given.") if ((@ARGV == 0) && (-t STDIN)); - -print `fd sh`; -print `find . -type f -name '*sh*'`; - - -# FIXME: add tests (inline + bats) - - |