#!/usr/bin/env perl =pod =head1 NAME wrt-display - print static HTML from wrt entries =head1 USAGE wrt display new # newest entries wrt display all # table of contents for all dated entries wrt display 2016/4/1 # a specific date wrt display 2016/4 # all entries for a specific month wrt display 2016/4 # summary of entries for a year wrt display fulltext # complete text of archive wrt display feed # Atom feed of most recent month's entries # Take list of entries to display from standard input: echo 2016/4/1 | wrt display --stdin # Specify a different config file: wrt display --config ./wrt.json ... # Display help: wrt display --help =head1 DESCRIPTION C displays HTML for the given entry or entries in the current wrt repository to F. Entries may be specified by date or name. =head2 Special Entries B will return entries for the most recent month. B will return an Atom feed for the most recent month. B will return a table-of-contents for all date-based entries. B will return the full content of all date-based entries in the archive. Months in the form of B will return all entries for that month. Years in the form of B will return a summary of entries for the year. Detailed documentation can be found in the L man page or at L. =head1 LICENSE wrt is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. =head1 AUTHOR Brennen Bearnes =cut use 5.10.0; use strict; use warnings; no warnings 'uninitialized'; # use Data::Dumper; use App::WRT; use Carp; use Getopt::Long; use Pod::Usage; # Handle options, including help generated from the POD above. See: # - http://perldoc.perl.org/Getopt/Long.html#User-defined-subroutines-to-handle-options # - https://metacpan.org/pod/Pod::Usage # - http://michael.thegrebs.com/2014/06/08/Pod-Usage/ my $from_stdin = 0; my $config_file = 'wrt.json'; GetOptions( stdin => \$from_stdin, 'config=s' => \$config_file, help => sub { pod2usage(0) }, ) or pod2usage(2); unless (-e $config_file) { croak "No wrt config file found. Tried: $config_file"; } my $w = App::WRT::new_from_file($config_file); # With --stdin, take names of entries to display from standard input, one line # per name. Otherwise, take names from arguments. my @to_display = (); if ($from_stdin) { while (my $entry = <>) { chomp($entry); push @to_display, $entry; } } else { (@to_display) = @ARGV; } # TODO: Better error reporting strategy, print this on stderr: foreach my $entry (map { $w->expand_alias($_) } @to_display) { unless ($w->{entries}->is_extant($entry) || $entry eq $w->{feed_alias}) { say("No such entry: $entry"); exit(1); } } print $w->display(@to_display); exit(0);