#!/bin/sh -efu

. shell-error

export PATH=/sbin:/usr/sbin:/bin:/usr/bin
umask 022

. "/usr/libexec/girar/girar-sh-functions"

sudo_init

usage()
{
	[ -z "$*" ] || message "$*"
	echo >&2 "usage: $PROG <repo_name> <repo_suffix> <base_dir>"
	exit 1
}

gen_girar_sh_conf()
{
	cat >/etc/girar/repo/$repo <<EOF
GIRAR_REPO_DIR=$repo_dir
GIRAR_REPO_SUFFIX=$suffix
EOF
}

gen_girar_builder_ssh_conf()
{
	local user_repo=$(echo $repo | tr -d .)
	cat >>/var/lib/girar-builder/.ssh/config <<EOF

Host    build-girar-builder-$repo-i586
        HostName localhost
        Port 22
        User $builder-$user_repo

Host    build-girar-builder-$repo-x86_64
        HostName localhost
        Port 22
        User ${builder}64-$user_repo
EOF
}

gen_gb_sh_conf()
{
	cat >/etc/girar-builder/gb-sh-conf-$repo <<EOF
#!/bin/sh -efu

GB_REPO_NAME=$repo
GB_REPO_SOURCES=$base_path/files/apt/sources.list
GB_REPO_SELF_SOURCES=$base_path/files/apt/self.list
GB_REPO_DIR=$base_path
GB_REPO_SIGNER=security@etersoft.ru
GB_REPO_VENDOR=Etersoft
GB_REPO_CODENAME="Stable $repo"
GB_REPO_EMAIL=desktop@etersoft.ru
#GB_REPO_MIRRORS="saratov"
GB_REPO_MIRRORS=
GB_REPO_LABEL="Stable $repo"
GB_REPO_FLAVOUR="base"

GB_REPO_RPMARGS=
GB_REPO_UP_NAME=
GB_REPO_DOWN_NAME=
GB_REPO_REL_SUFF_MUST_NOT=
GB_REPO_REL_SUFF_MUST_HAVE=

GB_BUGZILLA_FROM=girar-builder@etersoft.ru
GB_BUGZILLA_TO=bugs@etersoft.ru
GB_BUGZILLA_KEY=bugs
EOF
}

if [ "${1-}" = '--help' ]; then
	usage
fi

[ "$#" -le 3 ] || usage 'Too many arguments.'
[ "$#" -ge 3 ] || usage 'Not enough arguments.'

repo="$1"; shift
suffix="$1"; shift
base_path="$1"; shift
builder=girar-builder
add_flavour=

repo_dir="$base_path"

[ ! -e "$repo_dir" ] && fatal "Repository directory '$repo_dir' not exists."
grep -q "$repo" /etc/girar/repositories 2>/dev/null && fatal "Repository '$repo' already exists."

for type in groups nmu packages; do
    name=/etc/girar/acl/list.$type.$repo
    touch $name
    chmod 664 $name
    chown girar:girar $name
done

mkdir -p /var/lib/girar/acl/$repo
chown :girar /var/lib/girar/acl/$repo
chmod 775 /var/lib/girar/acl/$repo

mkdir -p /var/spool/girar-builder/people/$repo
chown :girar-builder /var/spool/girar-builder/people/$repo
chmod 2775 /var/spool/girar-builder/people/$repo

gen_girar_sh_conf
gen_gb_sh_conf
echo "$repo" >>/etc/girar/repositories
gen_girar_builder_ssh_conf
