about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndinus <andinus@nand.sh>2020-08-28 01:16:50 +0530
committerAndinus <andinus@nand.sh>2020-08-28 01:16:50 +0530
commit22d19a2a3bab015cd6dd1cde771a844a215011c7 (patch)
tree31a0bd5f7982d8cef99837cf494661a8c19c8ec2
parent31eaa03522d53008daaa15e47a65ad5a5b4d96c2 (diff)
downloadlyra-22d19a2a3bab015cd6dd1cde771a844a215011c7.tar.gz
Split get_latest, get_mirror, get_kirch to fortunes.pl & kirch.sh
-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/