quantum_package/scripts/create_module.sh

160 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
#
# usage:
# create_module.sh MOs AOs Electrons
# Prepares all the files for the creation of a new module.
# The first argument is the name of the module
# All remaining aruments are dependencies.
# Thu Apr 3 01:44:58 CEST 2014
DEBUG=1
# If DEBUG=1, the print debug info.
function debug()
{
if [[ $DEBUG -eq 1 ]]
then
function debug()
{
echo "$@"
}
else
function debug()
{
:
}
fi
debug $@
}
function fail()
{
echo "Error: " $@
cd ${QPACKAGE_ROOT}/src
rm -rf ${MODULE}
exit 1
}
if [[ -z $QPACKAGE_ROOT ]]
then
echo "Error:"
echo "QPACKAGE_ROOT environment variable is not set."
echo "source quantum_package.rc"
exit 1
fi
MODULE=$1
# Check command line
if [[ -z $MODULE ]]
then
echo "usage: $(basename $0) <NewModuleName>"
exit 1
fi
shift
# Check if module already exists
if [ -d ${MODULE} ]
then
echo "Error: Module $MODULE already exists"
exit 1
fi
debug "Module does not already exist: OK"
# Set up dependencies
ALL_MODULES=$(cat NEEDED_MODULES)
echo "Select which modules you are sure you will need: (press q to quit)"
NEEDED_MODULES=""
select M in ${ALL_MODULES}
do
if [[ -z $M ]]
then
break
fi
NEEDED_MODULES+=" $M"
echo $NEEDED_MODULES
done
# Create module directory and go into it
mkdir ${QPACKAGE_ROOT}/src/${MODULE}
if [[ $? != 0 ]]
then
echo "Error: Unable to create module directory."
exit 1
fi
if [[ ! -d ${QPACKAGE_ROOT}/src/${MODULE} ]]
then
echo "Something strange happened: the"
echo ${QPACKAGE_ROOT}/src/${MODULE}
echo "directory was not created."
exit 1
fi
cd ${QPACKAGE_ROOT}/src/${MODULE}
if [[ ${PWD} != ${QPACKAGE_ROOT}/src/${MODULE} ]]
then
echo "Something strange happened: we should be in"
echo ${QPACKAGE_ROOT}/src/${MODULE}
echo "but we are in"
echo ${PWD}
exit 1
fi
debug "Module directory is created."
# Create the Makefile
${QPACKAGE_ROOT}/scripts/create_Makefile.sh || fail "Unable to create Makefile"
if [[ ! -f Makefile ]]
then
fail "Makefile was not created"
fi
debug "Makefile created"
# Create the NEEDED_MODULES file
${QPACKAGE_ROOT}/scripts/create_Needed_modules.sh ${NEEDED_MODULES} || fail "Unable to create the NEEDED_MODULES file"
if [[ ! -f NEEDED_MODULES ]]
then
fail "NEEDED_MODULES was not created"
fi
debug "NEEDED_MODULES created"
# Create rst templates
${QPACKAGE_ROOT}/scripts/create_rst_templates.sh || fail "Unable to create rst templates"
# Update module list in main NEEDED_MODULES
ALL_MODULES+=" ${MODULE}"
echo ${ALL_MODULES} > ${QPACKAGE_ROOT}/src/NEEDED_MODULES
debug "Updated NEEDED_MODULES"
# Create tests directory
mkdir tests
if [[ ! -d tests ]]
then
fail "tests directory was not created"
fi
cd tests || fail "Unable to enter into tests directory"
${QPACKAGE_ROOT}/scripts/create_tests_Makefile.sh
cd ..
if [[ ! -f tests/Makefile ]]
then
fail "tests/Makefile was not created"
fi