#!/usr/bin/perl # $Id$ #- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 MandrakeSoft SA #- Copyright (C) 2005, 2006 Mandriva SA #- #- This program is free software; you can redistribute it and/or modify #- it under the terms of the GNU General Public License as published by #- the Free Software Foundation; either version 2, or (at your option) #- any later version. #- #- 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. #- this program is based upon old urpmi.addmedia use strict; use urpm; use urpm::msg; use urpm::download; $ENV{PATH} = "/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"; delete @ENV{qw(ENV BASH_ENV IFS CDPATH)}; my @toremove; #- default option values my %options = ( noclean => 1, strict_match => 1, verbose => 1, ); { my $options_end = 0; foreach (@ARGV) { $_ eq '--' and $options_end = 1, next; unless ($options_end) { /^--?a$/ and $options{all} = 1, next; /^--?c$/ and $options{noclean} = 0, next; /^--?y$/ and $options{strict_match} = 0, next; /^--?v$/ and $options{verbose} = 1, next; /^--?q$/ and $options{verbose} = 0, next; /^-/ and do { print N("usage: urpmi.removemedia [-a] ... where is a medium name to remove. ") . N(" --help - print this help message. ") . N(" -a - select all media. ") . N(" -c - clean headers cache directory. ") . N(" -y - fuzzy match on media names. ") . N(" -q - quiet mode. ") . N(" -v - verbose mode. ") . (/^--?h(?:elp)$/ ? '' : N("\nunknown options '%s'\n", $_)); exit 0; }; } push @toremove, $_; } } my $urpm = new urpm; if ($< != 0) { $urpm->{fatal}(1, N("Only superuser is allowed to remove media")); } $options{verbose} > 0 or $urpm->{log} = sub {}; $urpm->read_config; urpm::download::set_cmdline_proxy(); my @entries = map { $_->{name} } @{$urpm->{media}}; if ($options{all}) { @toremove = @entries or die N("nothing to remove (use urpmi.addmedia to add a media)\n"); } else { @toremove or die N("the entry to remove is missing\n(one of %s)\n", join(", ", @entries)); } my @selected = $urpm->select_media_by_name(\@toremove, $options{strict_match}) or exit 1; $urpm->remove_media(\@selected); if ($options{noclean}) { #- FIXME: AFAIK it is broken because function below use {depslist} which we don't clean here urpm::remove_obsolete_headers_in_cache($urpm); } $urpm->write_urpmi_cfg; exit(0);