#!/bin/bash

PATH="${PATH}:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

USAGE="
${0} <action>
action:
  - play
"

FD_ANSIBLE_THALLIUM_RC=()

function parsing_thallium_opts()
{
    opts=()

    while getopts 'f:n:' OPT;
    do
        case ${OPT} in
        f)
            if [[ ${OPTARG} =~ ^[a-zA-Z0-9\:_\.\*\-]{1,128}$ ]];
            then
                opts+=("-${OPT} ${OPTARG}")
            fi
            ;;
        n)
            if [[ ${OPTARG} =~ ^[a-zA-Z0-9\:_\.\/\*\-]{1,128}$ ]];
            then
                opts+=("-${OPT} ${OPTARG}")
            fi
            ;;
        esac
    done

    echo -n "${opts[@]}";
}

case "${1}" in
    play)
        ACTION="ansible-playbook"
        if [ -f "${2}" ];
        then
            FD_ANSIPLAY_FILE="${2}"
        elif [ -f "$(pwd)/${2}" ];
        then
            FD_ANSIPLAY_FILE="${2}"
        else
            FD_ANSIPLAY_FILE=""
        fi

        if [ -z "${FD_ANSIPLAY_FILE}" ];
        then
            echo "missing or invalid playbook file path: ${FD_ANSIPLAY_FILE}" >&2
            exit 1
        fi

        while read line;
        do
            FD_ANSIBLE_THALLIUM_RC+=($(parsing_thallium_opts $(echo -n ${line}|cut -f2- -d':')));
        done < <(grep '^\s*#\+\s*thalliumrc\s*:' "${FD_ANSIPLAY_FILE}")
    ;;
    *)
        echo "${USAGE}" >&2
        exit 1
    ;;
esac

fd-thallium -n "${FD_ANSIBLE_THALLIUM_KEY_NAME:-${THALLIUM_KEY_NAME}}" ${FD_ANSIBLE_THALLIUM_RC[@]} -a "${ACTION}" -- "${@:${OPTIND}+1}"
exit ${?}
