#!/usr/bin/perl -w


use strict;			# Toutes les variables doivent etre declarees
use warnings;			# Verification de la syntaxe
use File::Copy;			# Utilisation de la fonction copy
use Switch;			# Utilisation des switch


my $VERSION = '0.0.5';
my $PACKAGE = 'debdeb.pl';


#########################################################################################
# RAFFRAICHIR LA CONSOLE
#########################################################################################
system('clear');


#########################################################################################
# DETECTION SI MODE ADMINISTRATEUR
#########################################################################################
my $ModeAdministrateur = ($> != 0) ? "FALSE" : "TRUE";


#########################################################################################
# PRESENTATION DE LA BESTIOLLE
#########################################################################################
print " __________________________________________________________________
|                                                                 |
|            $PACKAGE                    $VERSION                   |
|_________________________________________________________________|
|                                                                 |
| Decompresion                                                    |
|		debdeb.sh -d fichier.deb                          |
| Ajout                                                           |
|		debdeb.sh -a postint                              |
|		debdeb.sh -a postrm                               |
| Reconstitution                                                  |
|		debdeb.sh -r fichier.deb                          |
| Help                                                            |
|		debdeb.sh -h                                      |
|_________________________________________________________________|
|                                                                 |
|     Script par: b52   http://www.xcfa.tuxfamily.org/            |
|     Licence GPL 2                                               |
|_________________________________________________________________|
|                                                                 |","\n";

#########################################################################################
# ROOT ?
#########################################################################################
if ($ModeAdministrateur =~ "TRUE") {
	print "|   VOUS ETES ADMINISTRATEUR :  mise a jour du script             |\n";

} else {
	print "|   VOUS N'ETES PAS ADMINISTRATEUR : Utilisation de: debdeb.pl    |\n";
}
print "|_________________________________________________________________|\n\n";


#########################################################################################
# AFFICHAGE D'UN ENTETE
#########################################################################################
sub affiche_entete
{
	print "\n";
	print "+=============================================================================\n";
	print "|  $_[0]\n";
	print "+=============================================================================\n";
}


#########################################################################################
# INSTALLATION DE LA DERNIERE VERSION DE: debdeb.pl
#########################################################################################
if ($ModeAdministrateur =~ "TRUE") {
	mkdir("/tmp/debdeb_pl");
	system("wget --quiet  --directory-prefix=/tmp/debdeb_pl http://download.tuxfamily.org/xcfaudio/PlusPlus/debdeb/debdeb.pl");
	copy ("/tmp/debdeb_pl/debdeb.pl", "/usr/bin/debdeb.pl");
	system ("chmod +x /usr/bin/debdeb.pl");
	system ("rm -rf /tmp/debdeb_pl");
	affiche_entete ("La mise a jour de: debdeb.pl est effectuee.");
	exit 0;
}


#########################################################################################
# RECUPERATION DE $HOME
#########################################################################################
my $HOME = `echo \$HOME`;
chomp($HOME);

#########################################################################################
# RECHERCHE DU PATHNAME ACTUEL
#########################################################################################
my $path_pwd = `pwd`;
my $path_download;
chomp($path_pwd);


#########################################################################################
# EMPLACEMENT DE .bashrc
#########################################################################################
my $PathBashrc = $HOME . "/.bashrc";


#########################################################################################
# TEST DE L ALIAS ET INSCRIPTION SI ABSENT
#########################################################################################
my $BoolAlias = `grep dcp $PathBashrc`;
if ($BoolAlias =~ "alias dcp='debdeb.pl'") {
	# affiche_entete ("L ALIAS EST DEJA PRESENT");
} else {
	`echo "alias dcp='debdeb.pl'" >> $PathBashrc`;
	affiche_entete ("Mise a jour de l'alias: ok\nPour la prise en compte de l'alias [ dcp ], vous devrez effectuer un: Crtl + BackSpace");
}


#########################################################################################
# DATAS POUR postinst ET postrm
#########################################################################################
my $postinst =
'#!/bin/sh
set -e
# Automatically added by dh_installmenu
if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ]; then
	update-menus
fi
exit 0
';

my $postrm =
'#!/bin/sh
set -e
# Automatically added by dh_installmenu
if [ -x "`which update-menus 2>/dev/null`" ]; then update-menus ; fi
# End automatically added section
exit 0
';


#########################################################################################
# HELP
#########################################################################################
sub affiche_aide
{
	print "Ce script reprend trois commandes de [ dpkg-deb ]:\n";
	print "\tdpkg-deb --extract\n";
	print "\t\tExtrait l’arborescence d’une archive de paquet dans le répertoire spécifié.\n";
	print "\tdpkg-deb --control\n";
	print "\t\tExtrait les fichiers de contrôle d’une archive de paquet dans le répertoire spécifié.\n";
	print "\tdpkg-deb --build\n";
	print "\t\tCrée  une  archive  Debian avec l’arborescence contenue dans répertoire.\n";
	print "\t\t[ répertoire ] doit posséder un sous-répertoire DEBIAN qui contient les\n";
	print "\t\tfichiers de contrôle tel que le fichier « control » lui-même.\n";
	print "\n";
	exit 1;
}


#########################################################################################
# PAS DE PARAMETRE !!!
#########################################################################################
if (@ARGV == 0) {
	affiche_aide
}


#########################################################################################
# ET C EST PARTIS ... tsoin tsoin  ;)
#########################################################################################
switch($ARGV[0]) {
	case "-h" {
		affiche_aide
	}
	
	case "-a" {
		if ($ARGV[1] =~ "postinst" ) {
			print "\tAjout de postinst\n";
			my $path_postinst = $path_pwd . "/tempo/DEBIAN/postinst";
			open SOURCE, "> $path_postinst";
			print SOURCE $postinst;
			close SOURCE;
		}
		elsif ($ARGV[1] =~ "postrm" ) {
			print "\tAjout de postrm\n";
			my $path_postrm = $path_pwd . "/tempo/DEBIAN/postrm";
			open SOURCE, "> $path_postrm";
			print SOURCE $postrm;
			close SOURCE;
		}
		else {
			print "ERREUR: Les parametres pour [ -a ] doivent etre [ postinst ou postrm ] !\n";
		}
	}
	
	case "-r" {
		print "\tChoix reconstitution\n";
		if ( ! -d "$path_pwd/tempo" ) {
			print "\tLe dossier $path_pwd/tempo n'existe pas !\n";
			exit 1;
		}
		system ("fakeroot dpkg-deb -b $path_pwd/tempo $path_pwd/$ARGV[1]\n");
	}
	
	case "-d" {
		print "\tChoix decompression\n";
		if (! -f "$ARGV[1]") {
			print "\tERREUR: Le fichier [ $ARGV[1] ] n'existe pas !\n";
			exit 1;
		}
		if ( -d "$path_pwd/tempo" ) {
			print "\tDestruction de l'ancien dossier\n";
			system ("rm -rf $path_pwd/tempo");
		}
		print "\tDécompression de l'archive: [ $ARGV[1] ]\n";
		system ("dpkg-deb -x $path_pwd/$ARGV[1] $path_pwd/tempo");
		system ("dpkg-deb -e $path_pwd/$ARGV[1] $path_pwd/tempo/DEBIAN");
	}
}

print "\n";
exit 0;

