Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
#!/bin/bash echo "==> CKIT - Construction KIT" # ******************** SETTINGS ******************** #account ftp ftpaddress="ftp.deelab.org" foo="" bar="" #sito httpaddress="http://www.deelab.org" #organizzazione sito: $httpaddress/arch/$arch/ #cartella di compilazione builddir="$HOME/pkg/yaourtbuild" #cartella del repository NON DEVE ESSERE MAI TOCCATA repodir="$HOME/pkg/CKIT" #cache. dove pescare vecchi pacchetti. toccherà svuotarla a mano ogni tanto #ho deciso di non automatizzare l'operazione di proposito cachedir="$HOME/pkg/cache" #nome repo repo="deelab" #architettura arch="i686" # ******************** SETTINGS ******************** # CONTROLLO AZIONE if test -z "$1"; then echo "==> SOMARO! Devi darmi un'azione!" echo "==> Scegli tra check, update, build, build1, add o remove." exit 0 fi touch $repodir/listabuild touch $repodir/listacheck echo "==> Ok, azione scelta $1." # CHECK if [ "$1" == "check" ]; then if [ -f $repodir/listacheck ]; then rm $repodir/listacheck; fi touch $repodir/listacheck cd $repodir if [ -f $repo.db.tar.gz ]; then rm $repo.db.tar.gz fi wget $httpaddress/arch/$arch/$repo.db.tar.gz &>/dev/null echo "==> Controllo le versioni dei pacchetti e stampo solo quelli che vanno aggiornati." REGEX=".*-(svn|cvs|hg|git|bzr|darcs|devel)" for i in $(tar -tf $repo.db.tar.gz | grep -vE 'desc|depends' | sed -e 's:\/$::g'); do pacco=$(echo $i | rev | cut -d'-' -f3- | rev) foo=$(echo $i | rev | cut -d'-' -f2 | rev) bar=$(echo $i | rev | cut -d'-' -f1 | rev) repover=$(echo $foo-$bar) #controllo su aur url="http://aur.archlinux.org/packages/$pacco/$pacco/PKGBUILD" if PKGBUILD=$(wget -q -O - "$url"); then aurver="$(eval "$PKGBUILD" &>/dev/null; echo "$pkgver-$pkgrel")" else aurver="Null" fi #controllo in locale if pacman -Q $pacco &> /dev/null; then localver="$(LANG=C pacman -Qi "$pacco" | awk '/^Version/ {print $3}')" else localver="Null" fi #controllo devel if [[ "$pacco" =~ $REGEX ]] && [ -d $builddir/$pacco ]; then cd $builddir/$pacco develver=$(makepkg -o 2>&1 | grep $pacco | awk '{print $6}') cd ~ result=$(vercmp "$repover" "$develver") else develver="Null" result=$(vercmp "$repover" "$aurver") fi if [[ "$result" < 0 ]]; then echo " -> $pacco REPO:$repover LOCAL:$localver AUR:$aurver DEVEL:$develver" echo $pacco >> /tmp/CKIT cat /tmp/CKIT $repodir/listacheck > /tmp/listacheck rm /tmp/CKIT mv /tmp/listacheck $repodir/listacheck fi done fi # CHECK # UPDATE if [ "$1" == "update" ]; then echo "==> Aggiorno i PKGBUILD locali con quelli di AUR." for i in $(tar -tf $repo.db.tar.gz | grep -vE 'desc|depends' | sed -e 's:\/$::g'); do pacco=$(echo $i | rev | cut -d'-' -f3- | rev) printf " -> $pacco: aggiorno con il PKGBUILD di AUR? (y/n) " read risposta if [ "$risposta" == "y" ]; then cd $builddir wget http://aur.archlinux.org/packages/$pacco/$pacco.tar.gz &>/dev/null tar -xf "$pacco.tar.gz" rm $pacco.tar.gz fi done fi # UPDATE # BUILD if [ "$1" == "build" ]; then # CONTROLLO GLI ARGOMENTI DEL BUILD if test -z "$2" || test -z "$3" || test -z "$4"; then echo "==> Per il build mi servono [pacchetto] [flag1] [flag2]" echo "==> flag1=1 per prendere da AUR il PKGBUILD" echo "==> flag2=1 per compilare da root" exit 0 fi echo "==> Compilo senza uppare. Preparativi per il PKGBUILD." cd $builddir # PKGBUILD if [ "$3" == "1" ]; then echo "==> Tiro il pacco da aur" wget http://aur.archlinux.org/packages/$2/$2.tar.gz &>/dev/null tar -xf "$2.tar.gz" rm $builddir/$2.tar.gz else echo "==> Uso il PKGBUILD locale" fi cd $2 # makepkg if [ "$4" == "1" ]; then echo "==> Compilo da root!" sudo makepkg -i --asroot else echo "==> Compilo da comune mortale!" makepkg -i fi if [ -f $2*-$arch.pkg.tar.gz ]; then echo "==> Ok, $2 fatto :)" cd $repodir mv $builddir/$2/$2*-$arch.pkg.tar.gz $repodir # AGGIORNO IL FILE LISTA GLOB RM echo $2 >> /tmp/CKIT cat /tmp/CKIT $repodir/listabuild > /tmp/listabuild rm /tmp/CKIT mv /tmp/listabuild $repodir/listabuild echo "==> Attualmente ci sono questi pacchetti da aggiungere al repo:" cat $repodir/listabuild else echo "==> Spiacente, il pacco $2 non compila :(" fi fi # BUILD # BUILD1 if [ "$1" == "build1" ]; then echo "==> Processo i pacchetti ottenuti dal check." if [ $(stat -c%s $repodir/listacheck) == 0 ]; then echo "==> Non c'è niente da compilare, fai un check prima!" exit 0 fi for pacco in $(cat $repodir/listacheck); do printf "==> $pacco: vuoi aggiornare? (y/n) " read risposta if [ "$risposta" == "y" ]; then cd $builddir printf " -> Vuoi prendere il PKGBUILD da AUR? (y/n) " read risposta if [ "$risposta" == "y" ]; then wget http://aur.archlinux.org/packages/$pacco/$pacco.tar.gz &>/dev/null tar -xf "$pacco.tar.gz" rm $pacco.tar.gz else echo " -> ok mantengo quello locale." fi cd $pacco printf " -> Ti basta compilare da user? (y/n) " read risposta if [ "$risposta" == "y" ]; then makepkg -i &>/dev/null else sudo makepkg -i --asroot &>/dev/null fi if [ -f $pacco*-$arch.pkg.tar.gz ]; then echo " -> Ok, $pacco fatto :)" cd $repodir mv $builddir/$pacco/$pacco*-$arch.pkg.tar.gz $repodir # AGGIORNO IL FILE LISTA GLOB RM echo $pacco >> /tmp/CKIT cat /tmp/CKIT $repodir/listabuild > /tmp/listabuild rm /tmp/CKIT mv /tmp/listabuild $repodir/listabuild else echo " -> Spiacente, il pacco $pacco non compila :(" fi fi done echo "==> Appena compilati i seguenti pacchetti: " cat $repodir/listabuild fi # BUILD1 # ADD if [ "$1" == "add" ]; then echo "==> Non compilo un cacchio, aggiungo al repo tutti pacchetti presenti nel workspace." cd $repodir # CONTROLLO SE ESISTONO PACCHETTI COMPILATI if [ $(stat -c%s $repodir/listabuild) == 0 ]; then echo "==> Non c'è niente da aggiungere, fai qualche pacco prima!" exit 0 fi if [ -f $repo.db.tar.gz ]; then rm $repo.db.tar.gz fi wget $httpaddress/arch/$arch/$repo.db.tar.gz &>/dev/null #aggiungo al repo echo "==> Aggiungo al repo." for file in *$arch.pkg.tar.gz; do repo-add $repo.db.tar.gz $file done #db echo "==> Invio il db." lftp -u "$foo,$bar" $ftpaddress/arch/$arch -e "put $repo.db.tar.gz; exit" #sego i vecchi echo "==> Sego i vecchi pacchetti." for riga in $(cat listabuild); do lftp -u "$foo,$bar" $ftpaddress/arch/$arch -e "glob rm -f $riga-*-*-$arch.pkg.tar.gz; exit" done rm lista* #invio i nuovi echo "==> Invio i nuovi pacchetti." for file in *$arch.pkg.tar.gz; do lftp -u "$foo,$bar" $ftpaddress/arch/$arch -e "put $file; exit" mv $file $cachedir done echo "==> Fine aggiornamento repository." fi # ADD # REMOVE if [ "$1" == "remove" ]; then # CONTROLLO GLI ARGOMENTI DEL REMOVE if test -z "$2"; then echo "==> Dammi anche un pacchetto da cavare però!" exit 0 fi cd $repodir if [ -f $repo.db.tar.gz ]; then rm $repo.db.tar.gz fi wget $httpaddress/arch/$arch/$repo.db.tar.gz &>/dev/null repo-remove $repo.db.tar.gz $2 echo "==> Segato dal DB!" echo "==> Invio il DB." lftp -u "$foo,$bar" $ftpaddress/arch/$arch -e "put $repo.db.tar.gz; exit" echo "==> Cancello il pacco." lftp -u "$foo,$bar" $ftpaddress/arch/$arch -e "glob rm -f $2-*-*-$arch.pkg.tar.gz; exit" fi # REMOVE # AZIONE NON VALIDA if [ "$1" != "check" ] && [ "$1" != "update" ] && [ "$1" != "build" ] && [ "$1" != "build1" ] && [ "$1" != "add" ] && [ "$1" != "remove" ]; then echo "==> CAPRA! $1 non è un'azione valida!!!" exit 0 fi foo="foo" bar="bar" cd ~ echo "==> Fine esecuzione CKIT!"
This paste will be private.
From the Design Piracy series on my blog: