From 46f26f50cb658577b1cf0148f18e7cd562c1be0a Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Thu, 30 Mar 2006 02:09:26 +0000 Subject: (add_mirrors) create it out of the bundle path in order to factorize code with incomind updates support --- mdkupdate | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) (limited to 'mdkupdate') diff --git a/mdkupdate b/mdkupdate index 6e1c4dcb..c130e62f 100755 --- a/mdkupdate +++ b/mdkupdate @@ -170,27 +170,9 @@ You need to update to a newer version. You can get a new one from http://start.m my @bundles; $w = $in->wait_message(N("Please wait"), N("Preparing...")); my ($mirrors, $bundle) = ($bundle_info->{data}{mirrors}, $bundle_info->{data}{bundle}); - foreach my $mirror (@$mirrors) { - next if $mirror->{mode} eq 'anon'; # nothing to do - if ($mirror->{mode} eq 'auth') { - # add "user:pass@" substring if needed: - # user password & login provided by server on those provided with the bundle: - $bundle_vars{USER} = $mirror->{user} if $mirror->{user}; - $bundle_vars{PASS} = $mirror->{pass} if $mirror->{pass}; - my $encoded_login = uri_escape($bundle_vars{USER}); - my $encoded_pass = uri_escape($bundle_vars{PASS}); - $mirror->{url} =~ s!^([^:]*)://!\1://$encoded_login:$encoded_pass@!; - } else { # unknown method, aborting - undef $w; - log::explanations("we got a bad bundle"); - $in->ask_warn(N("Error"), N("This bundle is not well formated. Aborting.")); - $in->exit(1); - } - } - my %mirrors = map { $_->{name} => join('@', grep { $_ } $_->{auth}, $_->{url}) } @$mirrors; - add_media($_, $mirrors{$_}, 'media_info/synthesis.hdlist.cz', '') foreach keys %mirrors; $bundle =~ s/-[^-]*-[^-]*\.[^.]*\.rpm$//; push @bundles, $bundle; + my %mirrors = add_mirrors($in, $w, $mirrors, \%bundle_vars); install_pkgs($in, \@bundles, (find { /^bundle/ } keys %mirrors), { is_bundle => 1, auto_select => ($wc->{POST} =~ /AUTO_SELECT/ ? 1 : 0), @@ -203,6 +185,30 @@ You need to update to a newer version. You can get a new one from http://start.m } } +sub add_mirrors { + my ($in, $w, $mirrors, $bundle_vars, $option) = @_; + foreach my $mirror (@$mirrors) { + next if $mirror->{mode} eq 'anon'; # nothing to do + if ($mirror->{mode} eq 'auth') { + # add "user:pass@" substring if needed: + # user password & login provided by server on those provided with the bundle: + $bundle_vars->{USER} = $mirror->{user} if $mirror->{user}; + $bundle_vars->{PASS} = $mirror->{pass} if $mirror->{pass}; + my $encoded_login = uri_escape($bundle_vars->{USER}); + my $encoded_pass = uri_escape($bundle_vars->{PASS}); + $mirror->{url} =~ s!^([^:]*)://!\1://$encoded_login:$encoded_pass@!; + } else { # unknown method, aborting + undef $w; + log::explanations("we got a bad bundle"); + $in->ask_warn(N("Error"), N("This bundle is not well formated. Aborting.")); + $in->exit(1); + } + } + my %mirrors = map { $_->{name} => join('@', grep { $_ } $_->{auth}, $_->{url}) } @$mirrors; + add_media($_, $mirrors{$_}, 'media_info/synthesis.hdlist.cz', $option) foreach keys %mirrors; + %mirrors; +} + sub ask_pkgs { my ($in) = @_; my $pkgs = get_updatable_pkgs(); -- cgit v1.2.1