#!/bin/sh

PATH="/usr/libexec/girar:$PATH"
PROG="${PROG:-${0##*/}}"
project_name_regexp='^[A-Za-z0-9][-A-Za-z0-9_.]+$'

msg_info()
{
	printf %s\\n "$PROG: $*" >&2
}

fatal()
{
	msg_info "$*"
	exit 1
}

quote_sed_regexp()
{
	local out="$*"
	if [ -z "${out##*[\[\].^\$\\/]*}" ]; then
		out="$(printf %s "$out" |sed -e 's/[].^$[\/]/\\&/g')" ||
			return 1
	fi
	printf %s "$out"
}

prefix_packages()
{
	local fmt='%s' dirname="${1%/*}"
	[ "$dirname" != "$1" ] ||
		fmt='packages/%s'
	printf "$fmt" "$1"
}

add_git_suffix()
{
	local arg="$1"
	[ -z "${arg##*.git}" ] ||
		arg="$arg.git"
	printf %s "$arg"
}

validate_packages_dir()
{
	local dir0 dirname dir
	dir0="$(prefix_packages "$1")"; shift
	dirname="${dir0%/*}"
	[ "$dirname" = 'packages' -o "$dirname" = 'private' ] ||
		fatal "$dir0: invalid directory name"
	dir="$(printf %s "${dir0##*/}" |sed -e 's,/\+$,,' -e 's,\.git$,,')"
	printf %s "$dir" |egrep -qs "$project_name_regexp" ||
		fatal "$dir0: invalid directory name"
	printf %s\\n "$dirname/$dir"
}
