#!/usr/bin/perl -w

#########################################################################################
#
# APPLICATION ECRITE EN SCRIPT PERL PERMETTANT DE RENOMMER
# DES FICHIERS AVEC INCREMENTATION D'UN COMPTEUR
#
#########################################################################################
#
#     Script cree par:
#       b52 alias xcfaudio
#	http://www.xcfa.tuxfamily.org/
#	http://download.tuxfamily.org/xcfaudio/Script/
#
#########################################################################################
#
# A la demande de Zarer:
#     http://www.road2mayotte.org/calepin/
# 
# Cahier des charges:
# -------------------
# 1°) renseigner le chemin,
#     -p
# 2°) renseigner le nom de fichier
#     -f
#     renseigner l'extension.
#     -e
# 3°) Lancer le script depuis un raccourci.
#     -alias <alias>
#	COPIE DU FICHIER [ renparam.pl ] DANS /usr/bin
#	APPLIQUER LA COMMANDE [ # chmod +x /usr/bin/renparam.pl ]
#	NE PAS OUBLIER UN logout et login POUR LA PRISE EN COMPTE DE L'ALIAS
# Ajout:
#     Aide:  -h
#     Test:  -t
#  
#########################################################################################
# Licence GPL 3
# RENPARAM.pl 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 3 of the License, or
# (at your option) any later version.
# 
# RENPARAM.pl 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, see
# http://www.gnu.org/licenses
# or write to
# the Free Software Foundation,Inc.
# 51 Franklin Street
# Fifth Floor
# Boston, MA 02110-1301 USA
# 
#########################################################################################


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
use Getopt::Long;		# Options ligne de commande


my $PACKAGE = 'renparam.pl';
my $VERSION = '0.0.6';


#########################################################################################
# INDICES
#########################################################################################
my $ParamExtFile = '';		# -e
my $ParamFile = '';		# -f
my $ParamPath = '';		# -p
my $ParamTest = 'FALSE';	# -t
my $ParamHelp = 'FALSE';	# -h
my $ParamAlias = 'FALSE';	# -alias


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


#########################################################################################
# ANALYSE LES PARAMETRES DEPUIS LA LIGNE DE COMMANDE
#########################################################################################
Getopt::Long::Configure('no_ignorecase');
GetOptions
   ("e:s"     => \$ParamExtFile,   "ExtFile"  => \$ParamExtFile,
    "f:s"     => \$ParamFile,      "File"     => \$ParamFile,
    "p:s"     => \$ParamPath,      "Path"     => \$ParamPath,
    "t"       => \$ParamTest,      "Test"     => \$ParamTest,
    "h"       => \$ParamHelp,      "Help"     => \$ParamHelp,
    "alias:s" => \$ParamAlias ,    "Alias"    => \$ParamAlias 
    );


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


#########################################################################################
# RAFFRAICHIR LA CONSOLE
#########################################################################################
system('clear');
print("\n");


#########################################################################################
# CONFIGURATION DES PARAMETRES
#########################################################################################
if( $ParamFile eq '' ) {
	$ParamFile = 'ketanou_mbiwi';
}
print("ParamFile is:     $ParamFile\n");

if( $ParamExtFile eq '' ) {
	$ParamExtFile = 'jpg';
}
print("ParamExtFile is:  $ParamExtFile\n");

if( ! -d $ParamPath ) {
	$ParamPath = `echo \$HOME`;
	chomp($ParamPath);
}
print("ParamPath is:     $ParamPath\n");

if( $ParamTest eq '1' ) {
	$ParamTest = 'TRUE';
}
print("ParamTest is:     $ParamTest\n");

if( $ParamHelp eq '1' ) {
	$ParamHelp = 'TRUE';
}
print("ParamHelp is:     $ParamHelp\n");

if( $ParamAlias eq '' ) {
	$ParamAlias  = 'FALSE';
}
print("ParamAlias is:    $ParamAlias\n");

print("\n");
print "+================================================================================================\n";
print("|  $PACKAGE  $VERSION\n");
print("|  SCRIPT PERL PERMETTANT DE RENOMMER DES FICHIERS AVEC INCREMENTATION D'UN COMPTEUR\n");
print "|------------------------------------------------------------------------------------------------\n";
print("|                    BULIN Claude  -  gpl3  -  http://www.xcfa.tuxfamily.org/\n");
print "+================================================================================================\n";

if (@ARGV == 0) {
	$ParamHelp = 'TRUE';
	print("\n");
}

#########################################################################################
# AFFICHAGE DE L'AIDE ET QUITTE
#########################################################################################
if( $ParamHelp ne "FALSE" ) {
	print("\t-p     <CHEMIN/>     Renseigner le chemin de recherche\n");
	print("\t-f     <FICHIER>     Renseigner le nom de fichier\n");
	print("\t-e     <EXTENTION>   Renseigner l'extension\n");
	print("\t-alias <ALIAS>       Ajouter un alias dans \$HOME/.bashrc\n");
	print("\t-t                   Tester avec visualisation du resultat\n");
	print("\t-h                   Cette aide\n");
	print("\n");
	print("\tExemple:\n");
	print("\t   \$ ./renparam.pl -p \$HOME -f fichier -e png -t\n");
	print("\t   \$HOME/file.png  -->  \$HOME/fichier_01.png\n");
	print("\t   \$HOME/img.png   -->  \$HOME/fichier_02.png\n");
	print("\t   ...\n");
	print("\n");
	exit( 0 );
}


#########################################################################################
# AJOUT D'UN ALIAS
#########################################################################################
if( $ParamAlias ne 'FALSE' ) {
	#########################################################################################
	# RECUPERATION DE $HOME
	#########################################################################################
	my $HOME = `echo \$HOME`;
	chomp($HOME);
	#########################################################################################
	# EMPLACEMENT DE .bashrc
	#########################################################################################
	my $PathBashrc = $HOME . "/.bashrc";
	#########################################################################################
	# TEST DE L ALIAS ET INSCRIPTION SI ABSENT
	#########################################################################################
	my $BoolAlias = `grep $ParamAlias $PathBashrc`;
	if ($BoolAlias =~ "alias $ParamAlias=") {
		affiche_entete ("L'alias [ $ParamAlias ] existe deja dans: $PathBashrc");
	} else {
		`echo "alias $ParamAlias='$PACKAGE'" >> $PathBashrc`;
		affiche_entete ("Mise a jour de l'alias: alias $ParamAlias='$PACKAGE'\n|  Pour la prise en compte de l'alias [ $ParamAlias ],\n|  vous devrez effectuer un: Crtl + BackSpace");
	}
}


#########################################################################################
# ACTION
#########################################################################################
my $Cpt = 1;
my $Ext;
my $Src;
my $Dest;
print("\n");
my @fic;
opendir( DIR, $ParamPath ) || die ('Erreur Open Dir');
@fic = readdir(DIR);
foreach (@fic)
{
	if( $_ ne "." && $_ ne ".." ) {
		# SI L'EXTENTION CORRESPOND
		if( $_ =~ /$ParamExtFile/ ) {
			# ISOLER L'EXTENTION
			$Ext  = "." . $ParamExtFile;
			# CONSTRUCTION DE LA SOURCE
			$Src = $ParamPath . $_;
			# CONSTRUCTION DE LA DESTINATION
			if( $Cpt < 10 ) {
				$Dest = $ParamPath . $ParamFile . "_0" . $Cpt . $Ext;
			} else {
				$Dest = $ParamPath . $ParamFile . "_" . $Cpt . $Ext;
			}
			
			if( $ParamTest =~ "TRUE" ) {
				printf("TEST RENAME: $Src\n\tTO: $Dest\n");
			}
			else {
				print("RENAME $Src\n\t$Dest\n");
				rename($Src, $Dest);
			}
			
			$Cpt ++;
		}
	}
}
close DIR; 
print("\n");

exit(0);





