jw-pkg/scripts/git-srv-admin.sh
Jan Lindemann 78bd6215b4 $(TOPDIR), make, scripts: Merged changes from V_1_2_3_33_YAPPLICATION_INIFILE_CTOR
Signed-off-by: Jan Lindemann <jan@jannet.de>
2012-09-02 16:06:47 +00:00

102 lines
1.5 KiB
Bash

#!/bin/sh
myname=`basename $0`
usage()
{
cat << EOT | sed 's/^ |//'
|
| $myname cmd [cmd-arguments] ...
|
| commands are:
|
| create-personal-project name
| list-personal-projects
|
EOT
[ "$1" ] && exit $1
}
log()
{
echo $@
}
err()
{
echo $@ >&2
}
fatal()
{
err $@
exit 1
}
md()
{
local dir=$1
local mode=$2
local owner=$3
local group=$4
[ -d $dir ] || {
log "creating $dir as $owner.$group with mode $mode"
/usr/bin/install -m $mode -o $owner -g $group -d $dir || {
fatal "failed to create directory $dir"
}
}
}
# ----------------- commands
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"
cd $dir || fatal "failed to change to $dir"
git init --bare || fatal "git init failed"
}
list_personal_projects()
{
cd $pdir
ls */HEAD | sed 's%/HEAD%%' 2>/dev/null
}
# ----------------- 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"
}
p=$1
pdir=/srv/git/$id/proj
dir=$pdir/$p
case $cmd in
create-personal-project)
create_personal_project "$@"
exit 1
;;
list-personal-projects)
list_personal_projects "$@"
;;
*)
usage 1
;;
esac