aboutsummaryrefslogtreecommitdiffstats
path: root/modules/rpmdragora/dragora-urpm-addmedia
diff options
context:
space:
mode:
Diffstat (limited to 'modules/rpmdragora/dragora-urpm-addmedia')
-rwxr-xr-xmodules/rpmdragora/dragora-urpm-addmedia170
1 files changed, 170 insertions, 0 deletions
diff --git a/modules/rpmdragora/dragora-urpm-addmedia b/modules/rpmdragora/dragora-urpm-addmedia
new file mode 100755
index 00000000..3aafbf2e
--- /dev/null
+++ b/modules/rpmdragora/dragora-urpm-addmedia
@@ -0,0 +1,170 @@
+#!/usr/bin/perl
+#*****************************************************************************
+#
+# Copyright (c) 2004 Guillaume Cottenceau (gc at mandrakesoft dot com)
+# Copyright (c) 2006-2007 Thierry Vignaud <tvignaud@mandriva.com>
+# Copyright (c) 2004-2007 Mandriva SA
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2, as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+#*****************************************************************************
+#
+# $Id: gurpmi.addmedia 261187 2009-10-01 14:44:34Z tv $
+
+use strict;
+
+BEGIN {
+ @ARGV == 0 || "@ARGV" =~ /-h/ and do {
+ print "usage: gurpmi.addmedia [options] <name> <url> [with <relative_path>]
+where <url> is one of
+ [file:/]/<path>
+ ftp://<login>:<password>\@<host>/<path>
+ ftp://<host>/<path>
+ http://<host>/<path>
+ removable://<path>
+
+and [options] are from
+ --distrib install a set of media from a distribution
+ --silent-success don't show popup window on success
+ --update create an update medium,
+ or discard non-update media (when used with --distrib)
+ --mirrorlist <url> is a mirror list
+";
+ exit(0);
+ };
+}
+use AdminPanel::Rpmdragora::init;
+use AdminPanel::Rpmdragora::open_db;
+use AdminPanel::Rpmdragora::formatting;
+
+use AdminPanel::Privileges;
+
+use lib qw(/usr/lib/libDrakX);
+use urpm::media;
+use MDK::Common::Func;
+use common qw(N);
+
+#
+if (AdminPanel::Privileges::is_root_capability_required()) {
+ require AdminPanel::Shared::GUI;
+ my $sh_gui = AdminPanel::Shared::GUI->new();
+ $sh_gui->warningMsgBox({
+ title => "gurpmi.addmedia",
+ text => N("root privileges required"),
+ });
+ exit (-1);
+}
+
+use AdminPanel::rpmdragora;
+use Getopt::Long;
+
+## TODO remove as soon as possible
+$::isStandalone = 1;
+
+AdminPanel::rpmdragora::readconf();
+
+my $fromfile;
+if (@ARGV == 1 && $ARGV[0] =~ /\.urpmi-media$/) {
+ @ARGV = map { s/^\s*//; s/\s*$//; $_ } split /\n/, cat_($ARGV[0]);
+ $fromfile = 1;
+}
+
+my ($update, $distrib, $silent_success) = (0, 0, 0);
+my ($mirrorlist, $with_dir);
+
+GetOptions(
+ 'update' => \$update,
+ 'distrib' => \$distrib,
+ 'silent-success' => \$silent_success,
+ 'mirrorlist=s' => \$mirrorlist,
+ 'urpmi-root=s' => \$::rpmdragora_options{'urpmi-root'}[0],
+);
+
+# compatibility with -update:
+if ($ARGV[0] =~ /^-?-update/) {
+ $update = 1;
+ shift @ARGV;
+}
+
+my @addmedia_args;
+my @names;
+
+while (@ARGV) {
+ my ($name, $url) = @ARGV;
+
+ if ($mirrorlist) {
+ ($with_dir, $url) = ($url, undef);
+ } elsif ($distrib) {
+ ($name, $url) = ('', $name);
+ } elsif ($url !~ m,^(([^:]*):/)?/,) {
+ AdminPanel::rpmdragora::interactive_msg('gurpmi.addmedia',
+ AdminPanel::Rpmdragora::formatting::escape_text_for_TextView_markup_format(
+ N("bad <url> (for local directory, the path must be absolute)") . "\n\n$url"));
+ AdminPanel::rpmdragora::myexit(-1);
+ }
+ push @addmedia_args, [ $name, $url ];
+ push @names, $name;
+ shift @ARGV foreach 1 .. 2;
+}
+
+if ($mirrorlist && $distrib && !@addmedia_args) {
+ @addmedia_args = [ '' ];
+}
+
+$fromfile and do {
+ AdminPanel::rpmdragora::interactive_msg('gurpmi.addmedia',
+N("%s
+
+Is it ok to continue?",
+$distrib || !@names
+? N("You are about to add new package media.
+That means you will be able to add new software packages
+to your system from these new media.")
+: 1 < @names
+? N("You are about to add new package medium, %s.
+That means you will be able to add new software packages
+to your system from these new media.", join ", ", @names)
+: N("You are about to add a new package medium, `%s'.
+That means you will be able to add new software packages
+to your system from that new medium.", $names[0])
+),
+ yesno => 1) or AdminPanel::rpmdragora::myexit(-1);
+};
+
+my $urpm = AdminPanel::Rpmdragora::open_db::fast_open_urpmi_db();
+my $success = 1;
+foreach (@addmedia_args) {
+ #- NB: that short circuits
+ $success = $success && AdminPanel::rpmdragora::add_medium_and_check(
+ $urpm,
+ { distrib => $distrib },
+ $_->[0],
+ $_->[1],
+ MDK::Common::Func::if_(!$distrib, undef),
+ MDK::Common::Func::if_($update, update => $update, only_updates => $update),
+ mirrorlist => $mirrorlist,
+ MDK::Common::Func::if_($with_dir, 'with-dir' => $with_dir),
+ );
+}
+if ($success) {
+ my $message =
+ $distrib ? N("Successfully added media.")
+ : @names > 1
+ ? N("Successfully added media %s.", join ", ", @names)
+ : N("Successfully added medium `%s'.", $names[0]);
+ AdminPanel::rpmdragora::interactive_msg('gurpmi.addmedia', $message) if !$silent_success;
+ AdminPanel::rpmdragora::myexit(0);
+} else {
+ AdminPanel::rpmdragora::myexit(-1);
+}