#!/bin/sh

# Usage:    ssh git@host desc <repo>
#           ssh git@host desc <repo> <description string>
#
# Show or set description for user-created ("wild") repo.

die() { echo "$@" >&2; exit 1; }
usage() { perl -lne 'print substr($_, 2) if /^# Usage/../^$/' < $0; exit 1; }
[ -z "$1" ] && usage
[ "$1" = "-h" ] && usage
[ -z "$GL_USER" ] && die GL_USER not set

# ----------------------------------------------------------------------
repo=$1; shift

# this shell script takes arguments that are completely under the user's
# control, so make sure you quote those suckers!

descfile=`gitolite query-rc GL_REPO_BASE`/"$repo".git/description

# Allow users with "R" access to read the repo's description.
if [ -z "$1" ]
then
    gitolite access -q "$repo" $GL_USER R any || die You are not authorised
    [ -r "$descfile" ] && cat "$descfile"
    exit 0
fi

# kernel.org needs 'desc' to be available to people who have "RW" or above,
# not just the "creator".  In fact they need it for non-wild repos so there
# *is* no creator.

if gitolite query-rc -q WRITER_CAN_UPDATE_DESC
then
    gitolite access -q "$repo" $GL_USER W any || die You are not authorised
else
    gitolite creator "$repo" $GL_USER || die You are not authorised
fi

echo "$*" > "$descfile"
