From 22d19a2a3bab015cd6dd1cde771a844a215011c7 Mon Sep 17 00:00:00 2001 From: Andinus Date: Fri, 28 Aug 2020 01:16:50 +0530 Subject: Split get_latest, get_mirror, get_kirch to fortunes.pl & kirch.sh --- lyra.pl | 115 +++++----------------------------------------------- scripts/fortunes.pl | 97 ++++++++++++++++++++++++++++++++++++++++++++ scripts/kirch.sh | 6 +++ 3 files changed, 113 insertions(+), 105 deletions(-) create mode 100755 scripts/fortunes.pl create mode 100755 scripts/kirch.sh 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 "; } + random($fortune_file); + } elsif ( $ARGV[0] eq "ls") { + run3[ "ls", $fortune_dir]; + } else { + say "lyra: no such fortune"; + } +} else { + say "Usage: lyra "; +} 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/ -- cgit 1.4.1-2-gfad0