#!/usr/bin/perl

# XAPI 1.3
# By Alfonso E.M. alfonso@el-magnifico.org
# Instalador de paquetes deb con avisos

use UI::Dialog;

$dialog = new UI::Dialog (order => ['zenity','xdialog']);

$|=1;
$file=$ARGV[0];
@parts=split(/\//,$file);
$log="/tmp/instalacion_".$parts[$#parts].".log";

$info=&get_deb_data($file);

$info.="\n\n Desea continuar ?";
print $info;

if ($dialog->yesno( 
	title => 'Instalacin de Programas en Guadalinex',
	backtitle => $file,
	height => 300, width=>85,
	text => "$info") ) { 
		if ($< != 0) {
			system("gksu -m 'Para instalar programas necesita la clave de supervisor (root)' 'dpkg -i $file > $log'  ");		
		} else {
			system("dpkg -i $file > $log");		
		}
		if (-e $log) { 
	                $xdialog->textbox( 
				title => 'Resultado de la instalacion',
				height => 20, width=>100,
				path => $log 
				);
			unlink $log;
		}
	}



sub get_deb_data() {
	my ($deb)=@_;
	$description="";
	open(DEB,"dpkg --info $deb |") or return ("");
	while (<DEB>) {
		chop;
		if (/Package: (.*)/) {$name=$1; }
		if (/Version: (.*)/) {$version=$1; }
		if (/Description: (.*)/) {$description="$1\n"; }
		if (/Installed-Size: (.*)/) {$isize=$1; }
		if (/Maintainer: (.*) <.*>/) {$maintainer=$1; }
		if (/^  (.*)/ && $description ne "") { $description.=$1; }
	}
	close DEB;
$info="
Va a instalar \"$name\" (versin $version) mantenido por \"$maintainer\".

Ocupar $isize Kbytes.

Esta es la descripcin incluida en el paquete:

$description
";
	return $info;
}
