# -*-shell-script-*-

escape_quotes() {
    echo $1 | sed 's/"/\\"/g'
}

expand() {
    eval "echo ${1?}"
}

save_function() {
    local orig_func=$(declare -f $1)
    local new_func="$2${orig_func#$1}"
    eval "$new_func"
}

metadata() {
    local var=${1?}
    if [ -z "${!var+x}" ]; then
	if [ -z "${2+x}" ]; then
	    echo "Missing required metadata $var" >&2
	    return 1
	else
	    echo "$2"
	fi
    else
	echo "${!var}"
    fi
}

join_paths() {
    local part1=${1?}
    local part2=${2?}
    if [[ "$part2" == /* ]]; then
	# part is absolute - use it directly
	echo $part2
    else
        # part is relative - prepend part1
        echo "$part1/$part2"
    fi
}