VERSION_FROM => 'lib/WebService/TDWTF.pm',
ABSTRACT_FROM => 'lib/WebService/TDWTF.pm',
AUTHOR => 'Marius Gavrilescu <marius@ieval.ro>',
+ EXE_FILES => ['tdwtf'],
MIN_PERL_VERSION => '5.14.0',
LICENSE => 'perl',
SIGN => 1,
PREREQ_PM => {
qw/Class::Accessor::Fast 0
+ HTML::FormatText 0
JSON::MaybeXS 0/,
},
@tr,
--- /dev/null
+package App::TDWTF;
+
+use 5.014000;
+use strict;
+use warnings;
+
+use Encode qw/encode/;
+use HTML::FormatText;
+use WebService::TDWTF;
+
+our $VERSION = '0.001';
+
+sub print_list {
+ my $idlen = length $_[0]->Id;
+ for my $art (@_) {
+ my $str = sprintf "%${idlen}d %s (by %s) in %s on %s\n", $art->Id, $art->Title, $art->AuthorName, $art->SeriesTitle, $art->DisplayDate;
+ print encode 'UTF-8', $str;
+ }
+}
+
+sub print_article {
+ my ($art) = @_;
+ printf "%s (by %s) in %s on %s\n\n", $art->Title, $art->AuthorName, $art->SeriesTitle, $art->DisplayDate;
+ say HTML::FormatText->format_string($art->Body)
+}
+
+sub run {
+ my ($args, @argv) = @_;
+ return print_list tdwtf_list_recent @argv if $args->{recent};
+ return print_list tdwtf_list_series @argv if $args->{series};
+ return print_list tdwtf_list_author @argv if $args->{author};
+ print_article tdwtf_article @argv
+}
--- /dev/null
+#!/usr/bin/perl
+use v5.14;
+use warnings;
+
+use App::TDWTF;
+use Getopt::Long;
+
+my %args;
+GetOptions(
+ recent => \$args{recent},
+ series => \$args{series},
+ author => \$args{author},
+);
+
+App::TDWTF::run(\%args, @ARGV);
+
+__END__
+
+=encoding utf-8
+
+=head1 NAME
+
+tdwtf - CLI interface to thedailywtf.com
+
+=head1 SYNOPSIS
+
+ tdwtf # prints a random article, as text
+ tdwtf 8339 # prints the article with ID 8339, as text
+ tdwtf --recent # lists the most recent 8 articles
+ tdwtf --recent 10 # lists the most recent 10 articles
+ tdwtf --recent 2015 01 # lists all articles published in January 2015
+ tdwtf --series errord # lists the most recent 8 Error'd articles
+ tdwtf --series errord 10
+ tdwtf --series errord 2015 01
+ tdwtf --author snoofle # lists the most recent 8 articles by snoofle
+ tdwtf --author snoofle 10
+ tdwtf --author snoofle 2015 01
+
+=head1 DESCRIPTION
+
+tdwtf is an CLI interface to the API of L<http://thedailywtf.com>.
+Quoting the website's sidebar:
+
+ Founded in 2004 by Alex Papadimoulis, The Daily WTF is your
+ how-not-to guide for developing software. We recount tales of
+ disastrous development, from project management gone spectacularly
+ bad to inexplicable coding choices.
+
+See SYNOPSIS for usage examples.
+
+=head1 SEE ALSO
+
+L<http://thedailywtf.com/>
+
+L<WebService::TDWTF>
+
+=head1 AUTHOR
+
+Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2016 by Marius Gavrilescu
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself, either Perl version 5.20.2 or,
+at your option, any later version of Perl 5 you may have available.
+
+
+=cut