#!/usr/bin/perl # for i18n use POSIX; use Locale::GetText; setlocale (LC_ALL, ""); Locale::GetText::textdomain ("urpmi"); import Locale::GetText I_; *i18n = *I_; $automatic = 0; $timeout = 15; $DIR = "/var/lib/urpmi"; $BASE = "$DIR/autoirpm"; $INSTALL_SCRIPT_REP = "$BASE.scripts"; $rpm = shift @ARGV; print STDERR "autoirpm: ", i18n("installing $rpm\n"); `xtest`; $X = ($? == 0); my $pid; $SIG{ALRM} = sub { $pid and kill 9, $pid; not_found(); }; alarm $timeout; if (!$automatic) { $interactive_mesg = i18n("Automatic installation of packages...\nYou requested installation of package $rpm\n") . i18n("Is it ok?"); if ($X) { my $ok = i18n("Ok"); my $cancel = i18n("Cancel"); ($pid = fork) or exec "gmessage", "-default", $ok, "-buttons", "$ok:0,$cancel:2", $interactive_mesg; wait(); $? and not_found(); } else { if (isatty(0)) { $noexpr = i18n("Nn"); $yesexpr = i18n("Yy"); print $interactive_mesg, i18n(" (Y/n) "); =~ /[$yesexpr]/ or not_found(); } else { # Arghhh not in automatic and no way to contact the user... dying not_found(); } } } alarm 0; $urpmi = !$automatic && $X ? "gurpmi" : "urpmi"; fork or exec $urpmi, "--comment", $ARGV[0], $rpm; wait; # launch the initial prog (readlink $ARGV[0]) !~ /$INSTALL_SCRIPT_REP/ and exec @ARGV; not_found(); sub not_found { print STDERR i18n("$rpm: command not found\n"); exit 127; }