#!/bin/bash log() { echo $@ } err() { echo $@ >&2 } fatal() { err $@ exit 1 } cmd_list_projects() { local all_proj proj p ( cd $projroot || fatal Failed to change to $projroot all_proj=`find . -maxdepth 1 -mindepth 1 -type d` for p in $all_proj; do test -x $p || continue test -r $p || continue p=${p##./} proj="$proj $p" done [ "$proj" ] && echo $proj ) } # ---------- here we go cvsroot=/srv/cvs projroot=$cvsroot/proj cmd=${1/-/_} shift eval cmd_$cmd $@