#!/usr/bin/env bash

CHECKOPTS=0
if [ "$1" == "--checkopts" ]; then
    CHECKOPTS=1
fi

PROJECT_NAME=${PROJECT_NAME:-cinder}
CFGFILE_NAME=${PROJECT_NAME}.conf.sample

if [ $CHECKOPTS -eq 1 ]; then
    if [ ! -e cinder/opts.py ]; then
        echo -en "\n\n#################################################"
        echo -en "\nERROR: cinder/opts.py file is missing."
        echo -en "\n#################################################\n"
        exit 1
    else
        mv cinder/opts.py cinder/opts.py.orig
        tox -e genopts &> /dev/null
        if [ $? -ne 0 ]; then
            echo -en "\n\n#################################################"
            echo -en "\nERROR: Non-zero exit from generate_cinder_opts.py."
            echo -en "\n       See output above for details.\n"
            echo -en "#################################################\n"
            mv cinder/opts.py.orig cinder/opts.py
            exit 1
        else
            diff cinder/opts.py.orig cinder/opts.py
            if [ $? -ne 0 ]; then
                echo -en "\n\n########################################################"
                echo -en "\nERROR: Configuration options change detected."
                echo -en "\n       A new cinder/opts.py file must be generated."
                echo -en "\n       Run 'tox -e genopts' from the base directory"
                echo -en "\n       and add the result to your commit."
                echo -en "\n########################################################\n\n"
                rm cinder/opts.py
                mv cinder/opts.py.orig cinder/opts.py
                exit 1
            else
                rm cinder/opts.py.orig
            fi
        fi
    fi
else

    tox -e genconfig &> /dev/null

    if [ -e etc/${PROJECT_NAME}/${CFGFILE_NAME} ]; then
        CFGFILE=etc/${PROJECT_NAME}/${CFGFILE_NAME}
        rm -f $CFGFILE
    else
        echo -en "\n\n####################################################"
        echo -en "\n${0##*/}: Can't find config file."
        echo -en "\n####################################################\n\n"
        exit 1
    fi
fi