git-srv-admin.sh: Add -f flag (horrible mess)

Signed-off-by: Jan Lindemann <jan@jannet.de>
This commit is contained in:
Jan Lindemann 2013-04-20 18:20:39 +00:00 committed by Jan Lindemann
commit 0b6cfd1f96

View file

@ -6,8 +6,12 @@ usage()
{
cat << EOT | sed 's/^ |//'
|
| $myname cmd [cmd-arguments] ...
| $myname [global options] cmd [cmd-arguments] ...
|
| global options are:
|
| -j : project is a jannet-project (default is a private project)
|
| commands are:
|
| create-personal-project name
@ -50,19 +54,30 @@ md()
}
# ----------------- commands
md_p()
{
if [ -d "$1" ]; then
return
fi
md_p `dirname $1` $2 $3 $4
md $@
}
create_project_dir()
{
if [ "$UID" != 0 ]; then
fatal "tried to create directory \"$dir\" as `whoami`, needs to be done as root"
fi
md_p `dirname $dir` 750 root jannet
md_p $dir 770 root $id
}
create_personal_project()
{
[ -e $dir ] && fatal "$dir already exists"
if [ "$UID" = 0 ]; then
md /srv/git 750 root jannet
md /srv/git/$id 750 root jannet
md /srv/git/$id/proj 750 root jannet
md /srv/git/$id/proj/$p 770 root $id
exit 0
fi
/usr/bin/sudo $0 create-personal-project $p || fatal "failed to set root uid"
/usr/bin/sudo `readlink -f $0` create-project-dir $dir || fatal "failed to set root uid"
cd $dir || fatal "failed to change to $dir"
git init --bare || fatal "git init failed"
}
@ -74,17 +89,34 @@ list_personal_projects()
}
# ----------------- here we go
cmd=$1
shift
id=`whoami`
[ "$SUDO_UID" ] && {
id=`/opt/ytools/bin/getpwuid $SUDO_UID | sed '/^name *=/ !d; s/^name *= *//'`
[ "$id" ] || fatal "failed to find uid $SUDO_UID in user database"
}
git_home=/srv/git/$id
pdir=$git_home/priv
OPTIND=1
while getopts jh flag; do
case $flag in
j)
pdir=$git_home/proj;;
h)
usage 0;;
*)
usage 1;;
esac
done
shift $(($OPTIND - 1))
cmd=$1
shift
p=$1
pdir=/srv/git/$id/proj
dir=$pdir/$p
case $cmd in
@ -95,6 +127,10 @@ create-personal-project)
list-personal-projects)
list_personal_projects "$@"
;;
create-project-dir)
dir=$1 # this is all a horrible variable and usage mess
create_project_dir "$@"
;;
*)
usage 1
;;