diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2008-06-26 12:53:05 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2008-06-26 12:53:05 +0000 |
commit | 9b057646f7da47ceccfb46ef6b357972f60c4b1e (patch) | |
tree | a92038ac2f75a6e2f8fadd77fc68f668933c0143 /urpm | |
parent | d9fd3c612ce2beee21b860a46753fd5a22c318f2 (diff) | |
download | urpmi-9b057646f7da47ceccfb46ef6b357972f60c4b1e.tar urpmi-9b057646f7da47ceccfb46ef6b357972f60c4b1e.tar.gz urpmi-9b057646f7da47ceccfb46ef6b357972f60c4b1e.tar.bz2 urpmi-9b057646f7da47ceccfb46ef6b357972f60c4b1e.tar.xz urpmi-9b057646f7da47ceccfb46ef6b357972f60c4b1e.zip |
- urpmi
o display a message "Package foo is already installed" when asking
"urpmi foo bar" and only installing bar (#41593)
(requires perl-URPM 3.16)
Diffstat (limited to 'urpm')
-rw-r--r-- | urpm/main_loop.pm | 17 | ||||
-rw-r--r-- | urpm/select.pm | 17 |
2 files changed, 20 insertions, 14 deletions
diff --git a/urpm/main_loop.pm b/urpm/main_loop.pm index 4d8b4382..6f743746 100644 --- a/urpm/main_loop.pm +++ b/urpm/main_loop.pm @@ -294,20 +294,9 @@ if ($nok) { if ($auto_select) { print N("Packages are up to date"), "\n"; } else { - my @pkgs = map { $urpm->{depslist}[$_] } map { split /\|/ } keys %$requested; - my ($installed, $error) = partition { $_->flag_installed } @pkgs; - my @installed = map { scalar $_->fullname } @$installed; - my @error = map { scalar $_->fullname } @$error; - my @msg1 = @installed == 0 ? () : - @installed == 1 ? - N("Package %s is already installed", join(', ', @installed)) : - N("Packages %s are already installed", join(', ', @installed)); - my @msg2 = @error == 0 ? () : - @error == 1 ? - N("Package %s can not be installed", join(', ', @error)) : - N("Packages %s can not be installed", join(', ', @error)); - $callbacks->{already_installed_or_not_installable} and $callbacks->{already_installed_or_not_installable}->(\@msg1, \@msg2); - print join("\n", @msg1, @msg2, ''); + my $msg = urpm::select::translate_already_installed($state); + $callbacks->{already_installed_or_not_installable} and + $callbacks->{already_installed_or_not_installable}->([$msg], []); } } $exit_code = 15 if our $expect_install; diff --git a/urpm/select.pm b/urpm/select.pm index cf176b52..f04d3bff 100644 --- a/urpm/select.pm +++ b/urpm/select.pm @@ -514,6 +514,22 @@ sub unselected_packages { grep { $state->{rejected}{$_}{backtrack} } keys %{$state->{rejected} || {}}; } +#- misc functions to help finding ask_unselect and ask_remove elements with their reasons translated. +sub already_installed { + my ($state) = @_; + grep { $state->{rejected}{$_}{installed} } keys %{$state->{rejected} || {}}; +} + +sub translate_already_installed { + my ($state) = @_; + + my @l = already_installed($state) or return; + + @l == 1 ? + N("Package %s is already installed", join(', ', @l)) : + N("Packages %s are already installed", join(', ', @l)); +} + sub translate_why_unselected { my ($urpm, $state, @fullnames) = @_; @@ -539,6 +555,7 @@ sub translate_why_unselected_one { } @unsatisfied)), $rb->{promote} && !$rb->{keep} ? N("trying to promote %s", join(", ", @{$rb->{promote}})) : (), $rb->{keep} ? N("in order to keep %s", join(", ", @{$rb->{keep}})) : (), + $rb->{installed} ? "already installed" : (), ); $fullname . ($s ? " ($s)" : ''); } |