Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.

Commit

Permalink
Merge pull request #83 from duckduckgo/russell/pin
Browse files Browse the repository at this point in the history
pin versions for module installations
  • Loading branch information
moollaza committed Jul 4, 2014
2 parents e827bc5 + 107262e commit 4b2fb7c
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions lib/App/DuckPAN/Perl.pm
Expand Up @@ -78,14 +78,28 @@ sub duckpan_install {
my $module = $packages->package($_);
if ($module) {
local $@;

# see if we have an env variable for this module
my $sp = $_;
$sp =~ s/\:\:/_/g;

# special case: check for a pinned verison number
my $pin_version = $ENV{$sp};
my $localver = $self->get_local_version($_);
if ($localver && $localver == version->parse($module->version)) {
my $duckpan_module_version = version->parse($module->version);
my $duckpan_module_url = $self->app->duckpan.'authors/id/'.$module->distribution->pathname;

if ($pin_version) {
print "$_: $localver installed, $pin_version pin, $duckpan_module_version latest\n";
if ($localver && $pin_version > $localver && $duckpan_module_version > $localver && $duckpan_module_version <= $pin_version) {
push @to_install, $duckpan_module_url unless grep { $_ eq $duckpan_module_url } @to_install;
}
} elsif ($localver && $localver == $duckpan_module_version) {
$self->app->print_text("You already have latest version of ".$_." with ".$localver."\n");
} elsif ($localver && $localver > version->parse($module->version)) {
$self->app->print_text("You have a newer version of ".$_." with ".$localver." (duckpan has ".version->parse($module->version).")\n");
} elsif ($localver && $localver > $duckpan_module_version) {
$self->app->print_text("You have a newer version of ".$_." with ".$localver." (duckpan has ".$duckpan_module_version.")\n");
} else {
my $latest = $self->app->duckpan.'authors/id/'.$module->distribution->pathname;
push @to_install, $latest unless grep { $_ eq $latest } @to_install;
push @to_install, $duckpan_module_url unless grep { $_ eq $duckpan_module_url } @to_install;
}
} else {
$self->app->print_text("[ERROR] Can't find package ".$_." on ".$self->app->duckpan."\n");
Expand Down

0 comments on commit 4b2fb7c

Please sign in to comment.