r3-cloud/r3.sh

76 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
usage() {
echo "Usage : r3 <task> <container>"
}
cleanup() {
LAST_ERROR=$?
if [ "${LAST_ERROR}" = 1 ] ;
then
usage
fi
if [ "${LAST_ERROR}" = 2 ] ;
then
echo "You do not appear to have a proper install path - please navigate to the r3-cloud folder and run './install.sh --full'"
fi
cd "${CWD}" 2>&1 || exit
}
R3_INSTALL_PATH=/usr/share/cybafelo/r3/r3-cloud
R3_V2_LIB_PATH=/r3-libs/r3-v2/src
R3_FOLDER="${R3_INSTALL_PATH}${R3_V2_LIB_PATH}/r3/"
TEMPLATE_FOLDER="${R3_INSTALL_PATH}${R3_V2_LIB_PATH}/templates/"
CWD=$(pwd)
TASK=$1
ARG1=$2
ARG2=$3
ARG3=$4
ARG4=$5
ARG5=$6
trap cleanup EXIT
cd "${R3_INSTALL_PATH}" 2>&1 || exit 2
if [ "${TASK}" = 'create' ];
then
CLASS_NAME=$ARG1
TEMPLATE="${ARG2}.template"
EXTEND_CLASS="${ARG3}"
EXTEND_CLASS_FILE_NAME="r3$(echo "${EXTEND_CLASS}" | sed 's/\([A-Z]\)/-\1/g' | awk '{print tolower($0)}').js"
FILE_NAME="r3$(echo "${CLASS_NAME}" | sed 's/\([A-Z]\)/-\1/g' | awk '{print tolower($0)}').js"
echo "${CLASS_NAME}"
echo "${TEMPLATE}"
echo "${EXTEND_CLASS}"
echo "${FILE_NAME}"
cp "${TEMPLATE_FOLDER}${TEMPLATE}" "${R3_FOLDER}${FILE_NAME}"
sed -i "s/CLASS_NAME/${CLASS_NAME}/g" "${R3_FOLDER}${FILE_NAME}"
sed -i "s/EXTEND_CLASS_FILE_NAME/${EXTEND_CLASS_FILE_NAME}/g" "${R3_FOLDER}${FILE_NAME}"
sed -i "s/EXTEND_CLASS/${EXTEND_CLASS}/g" "${R3_FOLDER}${FILE_NAME}"
CONTENTS=$(cat "${TEMPLATE_FOLDER}create_instance_before.template")
perl -i -pe "BEGIN{undef $/;} s/\/\/CREATE_INSTANCE_BEFORE_START.*\/\/CREATE_INSTANCE_BEFORE_END/\/\/CREATE_INSTANCE_BEFORE_START\n${CONTENTS}\n\t\t\/\/CREATE_INSTANCE_BEFORE_END/smg" "${R3_FOLDER}${FILE_NAME}"
CONTENTS=$(cat "${TEMPLATE_FOLDER}create_instance_after.template")
perl -i -pe "BEGIN{undef $/;} s/\/\/CREATE_INSTANCE_AFTER_START.*\/\/CREATE_INSTANCE_AFTER_END/\/\/CREATE_INSTANCE_AFTER_START\n${CONTENTS}\n\t\t\/\/CREATE_INSTANCE_AFTER_END/smg" "${R3_FOLDER}${FILE_NAME}"
echo "Created class ${R3_FOLDER}${FILE_NAME}"
exit 0
fi
# shellcheck disable=SC2086
docker-compose $TASK $ARG1 $ARG2 $ARG3 $ARG4 $ARG5