#!/bin/sh

#se ci son meno di tre argomenti
if [ $# -lt 3 ]
	then
		#se il primo argomento corrisponde ad -h o --help o help
		if [ $1 = -h ] || [ $1 = --help ] || [ $1 = help ] 
			then
				echo -e "Questo script ricerca file o directory nel contenuto di un pacchetto tcz indicatogli e ne divide il contenuto in due pacchetti.\n"
				
				echo -e "Potete ricercare un file specificando il suo nome oppure parte di esso utilizzando gli asterischi, es. readme.txt module*.cfg *.pyc"
				echo "Esempi di tipi di file che si possono voler separare possono essere:"
				echo "Develop: .h .c .pc .pyc"
				echo "Locales: .mo\n"
				
				echo -e "Potete ricercare una directory specificando il suo nome preceduto da /, potete usare gli asterischi anche in questo caso. Non potete speificare un path e dovete ricordare che le ricerche sono case sensitive\n"
				
				echo "Alla conclusione il file originale verrà rinominato in <pacchetto>_original.tcz, quello che manterrà il nome iniziale sarà stato privato dei file ricercati che saranno confluiti nel nuovo file <pacchetto><-nome_aggiuntivo>.tcz"
				echo -e "I file in esso confluiti saranno elencati nel file <pacchetto><nome_aggiuntivo>filelist.txt, le directory verranno specificate senza il loro contenuto\n"
				
				echo -e "Si pone lo script nella stessa directory del pacchetto da dividere e si usa questa sintassi:"
				echo "./tcz-externalizer <pacchetto.tcz> <-nome_aggiuntivo> <fine>...|<directory>..."
				echo "Es:" 
				echo "./tcz-externalizer geany.tcz -dev *.h *.la *.pc *.iface"
				echo -e "./tcz-externalizer geany.tcz -doc /doc\n"
			else
				echo -e "Mi aspetto almeno 3 argomenti:"
				echo -e "./tcz-externalizer <pacchetto.tcz> <-nome_aggiuntivo> <fine>...|<directory>..."
		fi
	else
		
		# ERODEDDIR$1 is /path/to/*.tcz file
		PACKNAME=`echo $1 | sed 's/.*\///' | sed 's/.tcz//'`
		PACKSURNAME=$2
		ERODEDDIR=`echo "$PACKNAME"_eroded`
		FILTREDDIR=`echo "$PACKNAME""$PACKSRUNAME"_filtred`
		FILTREDLIST=`echo "$PACKNAME""$PACKSURNAME"_filelist.txt `
		#echo $PACKNAME $ERODEDDIR $FILTREDDIR $FILTREDLIST

		if  [ ! -f "$PACKNAME"_original.tcz ];
			then cp "$PACKNAME".tcz "$PACKNAME"_original.tcz 
			echo 'Complete package renamed in "$PACKNAME"_original.tcz"'
			sleep 1
		fi  
		
		#clean any previous work
		sudo rm -rf ./$ERODEDDIR 
		sudo rm -rf ./$FILTREDDIR 
		sudo rm -rf ./$FILTREDLIST 
		
		#unsquash *.tcz
		tce-load -i squashfs-tools-4.x &>/dev/null 
		sudo unsquashfs -f -d $ERODEDDIR $1 &>/dev/null 
		
		
		#Crea la lista dei file con le estensioni passate con gli argomenti
		shift ;
		shift ;
			for var in "$@" ;
				do
					FIRSTCHAR=`echo $var | sed -r 's/^(.).*$/\1/g'`
					if [ $FIRSTCHAR = "/" ]
						then
							DIR=`echo $var | sed 's/^.//g'`
							find ./$ERODEDDIR -type d -name "$DIR" 
							find ./$ERODEDDIR -type d -name "$DIR" >> ./$FILTREDLIST 
							sleep 1 
							echo directory /$DIR ok
						else
							find ./$ERODEDDIR -not -type d -name "$var" 
							find ./$ERODEDDIR -not -type d -name "$var" >> ./$FILTREDLIST 
							sleep 1 
							echo directory $var ok
					fi
				done
		#copy dev files in dev directory
		mkdir ./$FILTREDDIR 
		cd ./$ERODEDDIR 
		cat ../$FILTREDLIST | sed 's/^.*'$ERODEDDIR'/\./g' | sed 's/^/sudo cp -a --parents /g' | sed 's/$/ ..\/'$FILTREDDIR'\//g' > ../copyfile 
		sh ../copyfile 
		cd ../ 
		rm -f ./copyfile 
		
		#remove dev files in nodev directory
		REMOVE=`cat ./$FILTREDLIST | sed 's/^/sudo rm -rf /g'` 
		$REMOVE 
		#remove empty folder in nodev directory
		sudo find ./$ERODEDDIR -type d -depth -exec rmdir {} + 2>/dev/null 
		
		#create package with and without dev
		rm -rf ./$PACKNAME'.tcz'
		mksquashfs ./$ERODEDDIR $PACKNAME'.tcz' 
		mksquashfs ./$FILTREDDIR $PACKNAME$PACKSURNAME'.tcz' 
		
		#final clean exluse de _devfilelist.txt
		sudo rm -rf ./$ERODEDDIR 
		sudo rm -rf ./$FILTREDDIR

fi



