aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xlyra.pl115
-rwxr-xr-xscripts/fortunes.pl97
-rwxr-xr-xscripts/kirch.sh6
3 files changed, 113 insertions, 105 deletions
diff --git a/lyra.pl b/lyra.pl
index 6545552..e2b57c8 100755
--- a/lyra.pl
+++ b/lyra.pl
@@ -8,69 +8,19 @@ use Path::Tiny;
use IPC::Run3;
my $fortune_dir = "$ENV{HOME}/fortunes";
-my %fortunes = (
- # mst quotes.
- mst => "http://www.trout.me.uk/quotes.txt",
-
- # All these are from rindolf's website.
- sholmif => "https://www.shlomifish.org/humour/fortunes/shlomif",
- "shlomif-fav"
- => "https://www.shlomifish.org/humour/fortunes/shlomif-fav",
- "shlomif-factoids"
- => "https://www.shlomifish.org/humour/fortunes/shlomif-factoids",
- "sholmif-email-sig"
- => "https://raw.githubusercontent.com/shlomif/shlomif-email-signature/master/shlomif-sig-quotes.txt",
-
- # Quotes from the Joel on Software site.
- # (http://www.joelonsoftware.com/)
- "joel-on-software"
- => "https://www.shlomifish.org/humour/fortunes/joel-on-software",
-
- # Quotes from the essays and writings of Paul Graham.
- # (http://www.paulgraham.com/)
- "paul-graham"
- => "https://www.shlomifish.org/humour/fortunes/paul-graham",
-
- # “The Rules of Open-Source Programming”.
- osp_rules => "https://www.shlomifish.org/humour/fortunes/osp_rules",
-
- # Excerpts from the online Subversion folklore.
- # (http://subversion.tigris.org/)
- "subversion"
- => "https://www.shlomifish.org/humour/fortunes/subversion",
-
- # A collection of conversations from Freenode’s #perl .
- "sharp-perl"
- => "https://www.shlomifish.org/humour/fortunes/sharp-perl",
- # A collection of conversations from Freenode’s ##programming .
- "sharp-programming"
- => "https://www.shlomifish.org/humour/fortunes/sharp-programming",
-
- # katspace quotes (ref: rindolf's website).
- "katspace_sayings"
- => "http://katspace.com/fandom/quotes/sayings",
- "katspace_more-sayings"
- => "http://katspace.com/fandom/quotes/kaijen",
- "katspace_books"
- => "http://katspace.com/fandom/quotes/book",
- "katspace_quotes"
- => "http://katspace.com/fandom/quotes/quotes",
-
- # levonk quotes (had starred kirch's fortunes repo, checked
- # profile & found this).
- "levon"
- => "https://raw.githubusercontent.com/levonk/fortune/master/levonkquotes",
-);
if ( $ARGV[0] ) {
- if ($fortunes{ $ARGV[0] } or -e "$fortune_dir/$ARGV[0]") {
+ if (-e "$fortune_dir/$ARGV[0]") {
my $fortune_file = "$fortune_dir/$ARGV[0]";
- random($fortune_file); }
- elsif ( $ARGV[0] eq "latest") { get_kirch(); get_latest(); }
- elsif ( $ARGV[0] eq "mirror") { get_kirch(); get_mirror(); }
- elsif ( $ARGV[0] eq "ls") { run3[ "ls", $fortune_dir]; }
- else { say "lyra: no such fortune"; }
-} else { say "Usage: lyra <fortune>"; }
+ random($fortune_file);
+ } elsif ( $ARGV[0] eq "ls") {
+ run3[ "ls", $fortune_dir];
+ } else {
+ say "lyra: no such fortune";
+ }
+} else {
+ say "Usage: lyra <fortune>";
+}
sub random {
my $fortune_file = shift @_;
@@ -78,48 +28,3 @@ sub random {
my @fortunes = split/\n%\n/, $file->slurp;
say $fortunes[ rand @fortunes ]; # Print random fortune.
}
-
-sub get_kirch {
- path("/tmp")->mkpath;
-
- run3 [qw(git -C /tmp clone https://github.com/JKirchartz/fortunes.git kirch)];
- $? # We assume non-zero is an error.
- ? warn "[WARN] Cannot get kirch fortunes :: $?\n"
- : say "Cloned kirch fortunes to /tmp/kirch";
-
- foreach my $file (qw( README.md LICENSE Makefile )) {
- my $file_t = "/tmp/kirch/$file";
- unlink $file_t and say "$file_t deleted."
- or warn "[WARN] Could not delete $file_t: $!\n";
- }
- system("rm -r /tmp/kirch/bin");
- system("cp -r /tmp/kirch/* /home/andinus/fortunes/");
-}
-
-sub get_latest {
- foreach my $fortune (sort keys %fortunes) {
- ftp("$fortune_dir/$fortune", $fortunes{$fortune});
- $? # We assume non-zero is an error.
- ? warn "[WARN] Failed to get $fortune :: $?\n"
- : say "got $fortune";
- }
-}
-
-sub get_mirror {
- require HTTP::Simple;
-
- # Ignore a warning, next line would've printed a warning.
- no warnings 'once';
- $HTTP::Simple::UA->verify_SSL(1);
-
- foreach my $fortune (sort keys %fortunes) {
- say "$fortune $fortunes{$fortune}";
- my $status =
- HTTP::Simple::getstore($fortunes{$fortune},
- "$fortune_dir/$fortune");
- warn "[WARN] Failed to fetch latest fortune\n"
- unless HTTP::Simple::is_success($status);
- }
-}
-
-sub ftp { run3 ["ftp", "-mvo", @_]; }
diff --git a/scripts/fortunes.pl b/scripts/fortunes.pl
new file mode 100755
index 0000000..ec785e3
--- /dev/null
+++ b/scripts/fortunes.pl
@@ -0,0 +1,97 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+use Path::Tiny;
+use IPC::Run3;
+
+my $fortune_dir = "$ENV{HOME}/fortunes";
+my %fortunes = (
+ # mst quotes.
+ mst => "http://www.trout.me.uk/quotes.txt",
+
+ # All these are from rindolf's website.
+ sholmif => "https://www.shlomifish.org/humour/fortunes/shlomif",
+ "shlomif-fav"
+ => "https://www.shlomifish.org/humour/fortunes/shlomif-fav",
+ "shlomif-factoids"
+ => "https://www.shlomifish.org/humour/fortunes/shlomif-factoids",
+ "sholmif-email-sig"
+ => "https://raw.githubusercontent.com/shlomif/shlomif-email-signature/master/shlomif-sig-quotes.txt",
+
+ # Quotes from the Joel on Software site.
+ # (http://www.joelonsoftware.com/)
+ "joel-on-software"
+ => "https://www.shlomifish.org/humour/fortunes/joel-on-software",
+
+ # Quotes from the essays and writings of Paul Graham.
+ # (http://www.paulgraham.com/)
+ "paul-graham"
+ => "https://www.shlomifish.org/humour/fortunes/paul-graham",
+
+ # “The Rules of Open-Source Programming”.
+ osp_rules => "https://www.shlomifish.org/humour/fortunes/osp_rules",
+
+ # Excerpts from the online Subversion folklore.
+ # (http://subversion.tigris.org/)
+ "subversion"
+ => "https://www.shlomifish.org/humour/fortunes/subversion",
+
+ # A collection of conversations from Freenode’s #perl .
+ "sharp-perl"
+ => "https://www.shlomifish.org/humour/fortunes/sharp-perl",
+ # A collection of conversations from Freenode’s ##programming .
+ "sharp-programming"
+ => "https://www.shlomifish.org/humour/fortunes/sharp-programming",
+
+ # katspace quotes (ref: rindolf's website).
+ "katspace_sayings"
+ => "http://katspace.com/fandom/quotes/sayings",
+ "katspace_more-sayings"
+ => "http://katspace.com/fandom/quotes/kaijen",
+ "katspace_books"
+ => "http://katspace.com/fandom/quotes/book",
+ "katspace_quotes"
+ => "http://katspace.com/fandom/quotes/quotes",
+
+ # levonk quotes (had starred kirch's fortunes repo, checked
+ # profile & found this).
+ "levon"
+ => "https://raw.githubusercontent.com/levonk/fortune/master/levonkquotes",
+);
+
+if ( $ARGV[0] ) {
+ if ( $ARGV[0] eq "latest") { get_latest(); }
+ elsif ( $ARGV[0] eq "mirror") { get_mirror(); }
+ else { say "fortunes.pl: no such option"; }
+} else { say "Usage: ./fortunes.pl latest or ./fortune.pl mirror"; }
+
+sub get_latest {
+ foreach my $fortune (sort keys %fortunes) {
+ ftp("$fortune_dir/$fortune", $fortunes{$fortune});
+ $? # We assume non-zero is an error.
+ ? warn "[WARN] Failed to get $fortune :: $?\n"
+ : say "got $fortune";
+ }
+}
+
+sub get_mirror {
+ require HTTP::Simple;
+
+ # Ignore a warning, next line would've printed a warning.
+ no warnings 'once';
+ $HTTP::Simple::UA->verify_SSL(1);
+
+ foreach my $fortune (sort keys %fortunes) {
+ say "$fortune $fortunes{$fortune}";
+ my $status =
+ HTTP::Simple::getstore($fortunes{$fortune},
+ "$fortune_dir/$fortune");
+ warn "[WARN] Failed to fetch latest fortune\n"
+ unless HTTP::Simple::is_success($status);
+ }
+}
+
+sub ftp { run3 ["ftp", "-mvo", @_]; }
diff --git a/scripts/kirch.sh b/scripts/kirch.sh
new file mode 100755
index 0000000..c975adc
--- /dev/null
+++ b/scripts/kirch.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+mkdir /tmp \
+ && git -C /tmp clone https://github.com/JKirchartz/fortunes.git kirch \
+ && cd /tmp/kirch && rm -r README.md LICENSE Makefile bin \
+ && cp -r /tmp/kirch/* $HOME/fortunes/