#!/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 _original.tcz, quello che manterrĂ  il nome iniziale sarĂ  stato privato dei file ricercati che saranno confluiti nel nuovo file <-nome_aggiuntivo>.tcz" echo -e "I file in esso confluiti saranno elencati nel file 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 <-nome_aggiuntivo> ...|..." 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 <-nome_aggiuntivo> ...|..." 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