add Autofetch

Wed, 14 Feb 2018 12:20:57 -0500

author
Meredith Howard <mhoward@roomag.org>
date
Wed, 14 Feb 2018 12:20:57 -0500
changeset 676
1b5b084bccbb
parent 675
55a3eaa98525
child 677
15d353917450

add Autofetch

.lib/perl5/Autofetch.pm file | annotate | diff | comparison | revisions
new file mode 100644
--- /dev/null
+++ b/.lib/perl5/Autofetch.pm
@@ -0,0 +1,29 @@
+package Autofetch;
+
+use strict;
+use warnings;
+use 5.010;
+
+sub fetch {
+  my ($path, $module) = @_;
+  system 'cpanm', -nq, -l => $path, $module;
+}
+
+sub cachepath {
+  $ENV{HOME} . '/.cache/lib/' . ($_[0] =~ y|/ |-_|r);
+}
+
+sub modulefy {
+  $_[0] =~ s/\.pm$//r =~ s|/|::|gr;
+}
+
+push @INC, sub {
+  my (undef, $file) = @_;
+  state $path = cachepath($0);
+
+  fetch($path, modulefy($file));
+
+  return IO::File->new($path . '/lib/perl5/' . $file);
+};
+  
+1;

mercurial