#!/bin/bash

set -xe

WORKDIR=/mnt/photon-root
REPO_PATHS=/repo
RELEASE_VER=5.0

create_image() {
    # make sure params is not empty or one empty arg will be passed by xargs, and photon-installer will fail
    params=("-i" "ova" "-v" "${RELEASE_VER}" "--repo-paths=${REPO_PATHS}" "-c" "${CFG_FILE}" "-w" "${WORKDIR}")
    for p in "${PARAMS[@]}" ; do
        params+=("--param")
        params+=("$p")
    done
    echo "running 'photon-installer'"
    printf "%s\0" "${params[@]}" | xargs -t -0 photon-installer
    echo "done with 'photon-installer'"
}

usage() {
    echo "Usage: $0"
    echo "          [-c|--config <config-file>] (required)"
    echo "          [-v|--releasever <version>] (default is ${RELEASE_VER})"
    echo "          [--param key=val [...]]"
    echo "          [--repo-paths] (default ${REPO_PATHS})"
}

OPTS=$(getopt -o hc:v: --long config:,param:,releasever:,repo-paths: -n $0 -- "$@")
if [ $? != 0 ] ; then
    usage
    echo "Terminating." >&2
    exit 1
fi

eval set -- "$OPTS"

while true; do
    case "$1" in
        -c | --config)     CFG_FILE=${2} ; shift 2 ;;
        -h)                usage ; exit 0;;
        --param)           PARAMS+=("${2}"); shift 2 ;;
        --repo-paths)      REPO_PATHS=${2} ; shift 2 ;;
        -v | --releasever) RELEASE_VER=${2} ; shift 2 ;;
        --) shift; break ;;
        *) break ;;
    esac
done

if [ -z "${CFG_FILE}" ] ; then
    echo "need a config file" >&2
    usage
    echo "Terminating." >&2
    exit 1
fi

create_image
