1. #!/bin/bash
  2.  
  3. # (c) 2008 by Florian Knodt
  4. #Tested only on gentoo without vhost-USE-Flag
  5.  
  6. #The system/user can change from dialog to e.g. Xdialog
  7. DIALOG=${DIALOG=dialog}
  8.  
  9. if [ ! -d /var/svn/ ] ;then
  10.     $DIALOG --backtitle "Repmin SVN Repository administration" --title "Fehler" --msgbox "SVN-Verzeichnis nicht gefunden!" 0 0
  11.     exit 1
  12. fi
  13.  
  14. while : ; do
  15.     #Hauptmenue
  16.     temp=`mktemp`
  17.     $DIALOG --backtitle "Repmin SVN Repository administration" --no-cancel --title "Hauptmenue" --menu "Bitte Aktion waehlen" 0 0 0 1 "Neues Repository" 2 "Repository loeschen" 3 "Beenden" 2>$temp
  18.     action=`cat $temp`
  19.     rm $temp
  20.     case $action in
  21.         '1')
  22.             temp=`mktemp`
  23.             $DIALOG --backtitle "Repmin SVN Repository administration" --title "Neues Repository"  --inputbox "Name des Repository" 0 0 2> $temp
  24.             if [ $? -eq 0 ] ;then
  25.                 rep=`cat $temp`
  26.  
  27.                 if [ -d /var/svn/$rep ] || [ -z $rep ] ;then
  28.                     $DIALOG --backtitle "Repmin SVN Repository administration" --title "Fehler" --msgbox "Repository $rep existiert bereits" 0 0
  29.                 else
  30.  
  31.                     $DIALOG --backtitle "Repmin SVN Repository administration" --title "Neues Repository"  --yesno "WebSVN-Eintrag erstellen?" 0 0
  32.                     websvn=$?
  33.  
  34.                     COUNT=0
  35.                     STEPS=6
  36.                     if [ $websvn -eq 0 ] ;then
  37.                         STEPS=`expr $STEPS + 1`
  38.                     fi
  39.  
  40.                     STEP_P=`expr 100 / $STEPS`
  41.  
  42.                     (
  43.                      
  44.                         echo $COUNT
  45.                         echo "XXX"
  46.                         echo "Erstelle Repository"
  47.                         echo "XXX"
  48.                         svnadmin create /var/svn/$rep
  49.                         COUNT=`expr $COUNT + $STEP_P`
  50.  
  51.  
  52.                         echo $COUNT
  53.                         echo "XXX"
  54.                         echo "Erstelle Basisstrukturen"
  55.                         echo "XXX"
  56.                         TDIR=`mktemp -d`
  57.                         cd $TDIR
  58.                         mkdir -p {trunk,tags,branches}
  59.                         COUNT=`expr $COUNT + $STEP_P`
  60.  
  61.                         echo $COUNT
  62.                         echo "XXX"
  63.                         echo "Importiere erste Revision"
  64.                         echo "XXX"
  65.                         svn import -q -m "Initial Import" --non-interactive $TDIR file:///var/svn/$rep
  66.                         COUNT=`expr $COUNT + $STEP_P`
  67.  
  68.                         echo $COUNT
  69.                         echo "XXX"
  70.                         echo "Rechte werden angepasst"
  71.                         echo "XXX"
  72.                         chown -R apache /var/svn/$rep
  73.                         COUNT=`expr $COUNT + $STEP_P`
  74.  
  75.                         if [ $websvn -eq 0 ] ;then
  76.                             grep "USE" /etc/make.conf | grep "vhosts"
  77.                             if [ $? -eq 1 ] && [ -f /var/www/localhost/htdocs/websvn/include/config.php ] ;then
  78.                                 echo $COUNT
  79.                                 echo "XXX"
  80.                                 echo "WebSVN-Eintrag wird angelegt"
  81.                                 echo "XXX"
  82.                                 cp /var/www/localhost/htdocs/websvn/include/config.php /var/www/localhost/htdocs/websvn/include/config.old.php
  83.                                 head -n -1 /var/www/localhost/htdocs/websvn/include/config.php > $TDIR/websvn.php
  84.                                 echo "\$config->addRepository(\"$rep\", \"file:///var/svn/$rep\");" >> $TDIR/websvn.php
  85.                                 echo "?>" >> $TDIR/websvn.php
  86.                                 mv $TDIR/websvn.php /var/www/localhost/htdocs/websvn/include/config.php
  87.                                 COUNT=`expr $COUNT + $STEP_P`
  88.                             else
  89.                                 websvn=255
  90.                             fi
  91.                         fi
  92.  
  93.                         echo "$COUNT"
  94.                         echo "XXX"
  95.                         echo "Aufraeumen..."
  96.                         echo "XXX"
  97.                         rmdir $TDIR/{trunk,tags,branches}
  98.                         rmdir $TDIR
  99.  
  100.                         echo "100"
  101.                         echo "XXX"
  102.                         echo "Fertig!"
  103.                         echo "XXX"
  104.  
  105.                     ) |
  106.                     $DIALOG --backtitle "Repmin SVN Repository administration" --title "Neues Repository" --gauge "Repository wird angelegt..." 20 70 0
  107.  
  108.                     if [ $websvn -eq 255 ] ;then
  109.                         $DIALOG --backtitle "Repmin SVN Repository administration" --title "Fehler" -msgbox "WebSVN-Eintrag konnte nicht angelegt werden - verwenden sie USE=vhosts?" 0 0
  110.                     fi
  111.  
  112.                     $DIALOG --backtitle "Repmin SVN Repository administration" --msgbox "Vorgang abgeschlossen" 0 0
  113.                 fi
  114.             fi
  115.             rm $temp;;
  116.         '2')
  117.             temp=`mktemp`
  118.             dirs=""
  119.             for i in `cd /var/svn && find * -maxdepth 0 -type d`; do
  120.                 dirs="$dirs $i $i"
  121.             done
  122.  
  123.             $DIALOG --backtitle "Repmin SVN Repository administration" --title "Repository-Liste" --menu "Bitte zu loeschendes Repository waehlen!" 0 0 0 $dirs 2> $temp
  124.             dialogchk=$?
  125.             rep=`cat $temp`
  126.            
  127.             if [ $dialogchk -eq 0 ] ;then
  128.            
  129.                 grep '/' $temp
  130.                 if [ $? -eq 0 ] ;then
  131.                     $DIALOG --backtitle "Repmin SVN Repository administration" --title "Fehler" --msgbox "uhm... rm -r /var/svn/$rep scheint mir keine gute idee zu sein... Wenn sie sicher sind führen sie den Befehl bitte manuell aus" 0 0
  132.                 else
  133.                     if [ ! -d /var/svn/$rep ] || [ -z $rep ] ;then
  134.                         $DIALOG --backtitle "Repmin SVN Repository administration" --title "Fehler" --msgbox "Repository $rep konnte nicht gefunden werden" 0 0
  135.                     else
  136.  
  137.                         rm -r /var/svn/$rep
  138.  
  139.                         if [ -f /var/www/localhost/htdocs/websvn/include/config.php ] ;then
  140.                             cp /var/www/localhost/htdocs/websvn/include/config.php /var/www/localhost/htdocs/websvn/include/config.old.php
  141.                             grep -v "addRepository(\"$rep\"" /var/www/localhost/htdocs/websvn/include/config.php > /var/www/localhost/htdocs/websvn/include/config.new.php
  142.                             mv /var/www/localhost/htdocs/websvn/include/config.new.php /var/www/localhost/htdocs/websvn/include/config.php
  143.                         fi
  144.  
  145.                         $DIALOG --backtitle "Repmin SVN Repository administration" --title "Vorgang erfolgreich" --msgbox "Repository wurde geloescht" 0 0
  146.                     fi
  147.                 fi
  148.             fi
  149.             rm $temp;;
  150.         '3')
  151.             exit 0;;
  152.     esac
  153. done