-
-
Save dpetrov/4030168 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl | |
use strict; | |
use warnings; | |
use 5.010; | |
use Mojo::UserAgent; | |
my $url = shift @ARGV or die "Usage: $0 metacpan_author_url"; | |
my $ua = Mojo::UserAgent->new; | |
my $dom = $ua->get($url)->res->dom; | |
my @modules = $dom->find('td.release a')->pluck('text')->each; | |
for my $module (@modules) { | |
$module =~ s/-/::/g; | |
qx/cpanm $module/; | |
} |
# and another solution proposed from Stephen Thirlwall (sdt) (see comment below) | |
cpan_favorites() { | |
perl -Mojo -E "g('https://metacpan.org/author/$1')->dom('td.release a')->pluck('text')->each(sub{s/-/::/g;say})" | |
} |
Oh nice - thanks for this!
I saw this post http://blogs.perl.org/users/steven_haryanto/2012/10/your-own-taskbelikeauthorfavorited.html and thought it might be better to just feed the favorites list into cpanm, rather than uploading something onto cpan.
Here's a one-line version you can stick in your .bashrc:
install_cpan_favorites() {
perl -Mojo -E "s/-/::/g and qx(cpanm \$_) for g('https://metacpan.org/author/$1')->dom('td.release a')->pluck('text')->each";
}
usage: install_cpan_favorites $username
(somewhat inspired by this thread: https://groups.google.com/forum/?fromgroups=#!topic/mojolicious/iTVzzjX5pPQ)
I think I prefer this which just lists them out, and then feed that into xargs cpanm or whatever:
cpan_favorites() {
perl -Mojo -E "g('https://metacpan.org/author/$1')->dom('td.release a')->pluck('text')->each(sub{s/-/::/g;say})"
}
That is really nice and I've already added it into my .bashrc :) I think also that the seconds version where you can pipe the output to cpanm is preferable. Thanks for the follow u and sharing it
See also TOKUHIROM's version.
Thanks @dolmen. Just saw the tweet and was checking it out ;)
DDP was added for debugging only and is not really needed