Browse Source

add `dev-util perl-upgrades` to report on available perl module upgrades

Byron Jones 6 years ago
parent
commit
4c43df1c00
1 changed files with 24 additions and 5 deletions
  1. 24 5
      dev-util

+ 24 - 5
dev-util

@@ -6,7 +6,8 @@ use warnings;
 
 use File::Find qw( find );
 use FindBin qw( $RealBin );
-use Mojo::File ();
+use Mojo::File qw( path );
+use Mojo::UserAgent ();
 use Mojo::Util qw( trim );
 use YAML::Tiny ();
 
@@ -18,7 +19,7 @@ syntax: dev-util <command> [command args]
 
 commands:
     svg-import <path>   update svg source from font-awesome
-    sass-make           create sass dark mode css
+    perl-upgrades       reports on newer versions of perl modules
 EOF
 
 if ($command eq 'svg-import') {
@@ -43,18 +44,36 @@ if ($command eq 'svg-import') {
         my $input_file  = "$source_path/" . $mapping->{$output_name} . '.svg';
         my $output_file = "$fa_path/$output_name.svg";
 
-        my $input = Mojo::File->new($input_file)->slurp;
+        my $input = path($input_file)->slurp;
         $input =~ s/<!--.*-->//sg;
         $input = trim($input);
 
-        my $output = -e $output_file ? Mojo::File->new($output_file)->slurp : '';
+        my $output = -e $output_file ? path($output_file)->slurp : '';
 
         if ($input eq $output) {
             say "inline-svg: $output_name unchanged";
         } else {
-            Mojo::File->new($output_file)->spurt($input);
+            path($output_file)->spurt($input);
             say "inline-svg: $output_name \e[34mupdated\e[0m";
         }
     }
 
+} elsif ($command eq 'perl-upgrades') {
+    my $ua = Mojo::UserAgent->new();
+    foreach my $line (split(/\n/, path('cpanfile')->slurp)) {
+        next unless $line =~ /^\s*requires '([^']+)', '==([^']+)';/;
+        my ($module, $installed_version) = ($1, $2);
+        print "$module $installed_version: ";
+
+        my $res = $ua->get("http://cpanmetadb.plackperl.org/v1.0/package/$module")->result;
+        die $res->message unless $res->is_success;
+        my $cpan = YAML::Tiny->read_string($res->body)->[0];
+
+        if ($cpan->{version} eq $installed_version) {
+            say 'ok';
+        } else {
+            (my $dist = $module) =~ s/::/-/g;
+            say "\e[34m", $cpan->{version}, "\e[0m - https://metacpan.org/changes/distribution/$dist";
+        }
+    }
 }