#!/bin/sh # # hdw - linux ./scripts/Update-Tree script # # author: hackbard@hackdaworld.dyndns.org # # defaults mode="keep" while [ "$1" ] ; do case "$1" in -mode) mode="$2" ; shift 2 ;; *) echo "usage:" echo echo "$0 -mode [keep|del|update]" echo exit 1 ;; esac done # reading Config file . ./Config # test - u need cvs installed! if [ ! -f /usr/bin/cvs ] ; then echo "you need cvs for updating the tree" echo "aborting." exit 1 fi # make sure cvs works .. [ ! -f $HOME/.cvspass ] && touch $HOME/.cvspass # does he use cvs? if [ -d ./CVS ] ; then echo "updating from official cvs tree first ..." cvs up -d > /dev/null 2>&1 echo "done" fi # fetching packages mkdir temp && cd temp echo "fetching developers packages ..." cvs -d:pserver:anonymous@hackdaworld.dyndns.org:/hdw-repos co packages targets > /dev/null 2>&1 echo "done" # add targets to $part one day for part in packages; do for dir in `ls -A --ignore="CVS" ./$part`; do if [ ! -d ../$part/$dir ] ; then echo "creating new repository $dir ..." mkdir ../$part/$dir fi for object in `ls -A --ignore="CVS" ./$part/$dir`; do if [ ! -d ../$part/$dir/$object ] ; then existing_p=`find ../$part -type d -name $object` if [ -z "$existing_p" ] ; then echo "creating new package $object" mkdir ../$part/$dir/$object cp -r ./$part/$dir/$object/* \ ../$part/$dir/$object else if [ "$mode" = "del" ] ; then echo "del mode: overwriting $object ..." rm -rf $existing_p/* cp -r ./$part/$dir/$object/* \ $existing_p else echo "$object exists." if [ "$mode" = "update" ] ; then cd $existing_p echo "running cvs ..." cvs up -d >/dev/null 2>&1 cd - fi fi fi else if [ "$mode" = "del" ] ; then echo "del mode: overwriting $object ..." rm -rf ../$part/$dir/$object/* cp -r ./$part/$dir/$object/* \ ../$part/$dir/$object echo "done" else echo "$object exists." if [ "$mode" = "update" ] ; then cd ../$part/$dir/$object echo "running cvs ..." cvs up -d >/dev/null 2>&1 cd - fi fi fi done done done cd .. && rm -rf ./temp