#!/bin/sh

# Initialize a Freight directory (similar to git init).

#/ Usage: freight init -g<email> [--libdir=<libdir>] [--cachedir=<cachedir>] [--archs=<archs>] [--origin=<origin>] [--label=<label>] [-v] [-h] [<dirname>]
#/   -g<email>, --gpg=<email> GPG key to use
#/   -c<conf>, --conf=<conf>  config file to create (default etc/freight.conf)
#/   --libdir=<libdir>        library directory (default var/lib/freight)
#/   --cachedir=<cachedir>    cache directory (default var/cache/freight)
#/   --archs=<archs>          architectures to support (default "i386 amd64")
#/   --origin=<origin>        Debian archive Origin field (default "Freight")
#/   --label=<label>          Debian archive Label field (default "Freight")
#/   --suite=<suite>          Debian archive Suite field
#/   -v, --verbose            verbose mode
#/   -h, --help               show this help message

set -e

CONF="etc/freight.conf"

usage() {
    grep "^#/" "$0" | cut -c"4-" >&2
    exit "$1"
}
while [ "$#" -gt 0 ]
do
	case "$1" in
		-g|--gpg) GPG="$2" shift 2;;
		-g*) GPG="$(echo "$1" | cut -c"3-")" shift;;
		--gpg=*) GPG="$(echo "$1" | cut -c"7-")" shift;;
		-c|--conf) CONF="$2" shift 2;;
		-c*) CONF="$(echo "$1" | cut -c"3-")" shift;;
		--conf=*) CONF="$(echo "$1" | cut -c"8-")" shift;;
		--libdir) VARLIB="$2" shift 2;;
		--libdir=*) VARLIB="$(echo "$1" | cut -c"10-")" shift;;
		--cachedir) VARCACHE="$2" shift 2;;
		--cachedir=*) VARCACHE="$(echo "$1" | cut -c"12-")" shift;;
		--archs) ARCHS="$2" shift 2;;
		--archs=*) ARCHS="$(echo "$1" | cut -c"9-")" shift;;
		--origin) ORIGIN="$2" shift 2;;
		--origin=*) ORIGIN="$(echo "$1" | cut -c"10-")" shift;;
		--label) LABEL="$2" shift 2;;
		--label=*) LABEL="$(echo "$1" | cut -c"9-")" shift;;
		--suite) SUITE="$2" shift 2;;
		--suite=*) SUITE="$(echo "$1" | cut -c"9-")" shift;;
		-v|--verbose) VERBOSE=1 shift;;
		-h|--help) usage 0;;
		-*) echo "# [freight] unknown switch: $1" >&2;;
		*) break;;
	esac
done
DIRNAME="$(cd "${1:-"."}" && pwd)"
[ -z "$GPG" -o -z "$DIRNAME" ] && usage 1

# The default value for VARLIB and VARCACHE lies within DIRNAME but otherwise
# follows the FHS style.
VARLIB="${VARLIB:-"$DIRNAME/var/lib"}"
VARCACHE="${VARCACHE:-"$DIRNAME/var/cache"}"

# Create the directory where `CONF` will be placed.  This is likely given
# relative to `DIRNAME` so change to that directory to make things easy.
mkdir -p "$DIRNAME"
cd "$DIRNAME"
mkdir -p "$(dirname "$CONF")"

# Generate `etc/freight.conf` (or some other pathname) with all the options.
cat >"$CONF" <<EOF
VARLIB="$VARLIB"
VARCACHE="$VARCACHE"
GPG="$GPG"
EOF
[ "$ARCHS" ] && echo "ARCHS=\"$ARCHS\"" >>"$CONF"
[ "$ORIGIN" ] && echo "ORIGIN=\"$ORIGIN\"" >>"$CONF"
[ "$LABEL" ] && echo "LABEL=\"$LABEL\"" >>"$CONF"
[ "$SUITE" ] && echo "SUITE=\"$SUITE\"" >>"$CONF"

# return 0 when we come here
exit 0
