#!/bin/sh BASEURL="http://localhost:8081" BASEURI="http://srs.epita.fr/owncloud/remote.php/webdav/FIC 2016" new_theme() { NAME=`echo $1 | sed 's/"/\\\\"/g'` curl -f -s -d "{\"name\": \"$NAME\"}" "${BASEURL}/api/themes/" | grep -Eo '"id":[0-9]+,' | grep -Eo "[0-9]+" } new_exercice() { THEME="$1" TITLE=`echo "$2" | sed 's/"/\\\\"/g'` STATEMENT=`echo "$3" | sed 's/"/\\\\"/g'` HINT=`echo "$4" | sed 's/"/\\\\"/g'` DEPEND="$5" GAIN="$6" VIDEO="$7" curl -f -s -d "{\"title\": \"$TITLE\", \"statement\": \"$STATEMENT\", \"hint\": \"$HINT\", \"depend\": $DEPEND, \"gain\": $GAIN, \"videoURI\": \"$VIDEO\"}" "${BASEURL}/api/themes/$THEME" | grep -Eo '"id":[0-9]+,' | grep -Eo "[0-9]+" } new_file() { THEME="$1" EXERCICE="$2" URI="$3" curl -f -s -d "{\"URI\": \"$URI\"}" "${BASEURL}/api/themes/$THEME/$EXERCICE/files" | grep -Eo '"id":[0-9]+,' | grep -Eo "[0-9]+" } new_key() { THEME="$1" EXERCICE="$2" NAME="$3" KEY=`echo $4 | sed 's/"/\\\\"/g'` curl -f -s -d "{\"name\": \"$NAME\", \"key\": \"$KEY\"}" "${BASEURL}/api/themes/$THEME/$EXERCICE/keys" | grep -Eo '"id":[0-9]+,' | grep -Eo "[0-9]+" } # Theme while read -p "Theme name: " THEME_NAME do if [ -z "$THEME_NAME" ]; then break fi THEME_ID=`new_theme "$THEME_NAME"` if [ -z "$THEME_ID" ]; then echo -e "\e[31;01m!!! An error occured during theme add\e[00m" continue else echo -e "\e[32m>>> New theme created:\e[00m $THEME_ID - $THEME_NAME" fi LAST=null EXO_NUM=1 THM_BASEURI= echo echo -e "\e[36m--- Filling exercice ${EXO_NUM} in theme ${THEME_NAME}\e[00m" while read -p "Exercice title (^D to pass to the next theme) [Exercice ${EXO_NUM}]: " EXO_NAME do if [ -z "${EXO_NAME}" ]; then EXO_NAME="Exercice ${EXO_NUM}" fi if [ "${LAST}" = "null" ]; then echo ">>> Assuming this exercice has no dependency" else echo ">>> Assuming this exercice depends on the last entry (id=${LAST})" fi EXO_GAIN=$((5 ** $EXO_NUM)) echo ">>> Using default gain: ${EXO_GAIN} points" echo "--- Enter the description for ${EXO_NUM} in theme ${THEME_NAME}" EXO_DESC=`cat` echo "--- Enter the optional hint for ${EXO_NUM} in theme ${THEME_NAME}" EXO_HINT=`cat` if [ -z "${THM_BASEURI}" ] then read -p "Base URI for the theme [/${THEME_NAME}/]: ${BASEURI}" THM_BASEURI if [ -z "${THM_BASEURI}" ]; then THM_BASEURI="/${THEME_NAME}/" fi fi read -p "Base URI for the exercice [${EXO_NAME}/]: ${BASEURI}${THM_BASEURI}" EXO_BASEURI if [ -z "${EXO_BASEURI}" ]; then EXO_BASEURI="${EXO_NAME}/" fi read -p "Video URI: ${BASEURI}${THM_BASEURI}${EXO_BASEURI}" EXO_VIDEO EXO_ID=`new_exercice "${THEME_ID}" "${EXO_NAME}" "${EXO_DESC}" "${EXO_HINT}" "${LAST}" "${EXO_GAIN}" "${THM_BASEURI}${EXO_BASEURI}${EXO_VIDEO}"` if [ -z "$EXO_ID" ]; then echo -e "\e[31;01m!!! An error occured during exercice add.\e[00m" continue else echo -e "\e[32m>>> New exercice created: $EXO_ID - $EXO_NAME\e[00m" fi # Keys while read -p "New key: " KEY_RAW do if [ -z "${KEY_RAW}" ] then break fi read -p "Key type/kind/hint: " KEY_TYPE KEY_ID=`new_key "${THEME_ID}" "${EXO_ID}" "${KEY_TYPE}" "${KEY_RAW}"` if [ -z "$KEY_ID" ]; then echo -e "\e[31;01m!!! An error occured during key add.\e[00m" else echo -e "\e[32m>>> New key created: $KEY_ID - $KEY_TYPE\e[00m" fi done # Files while read -p "Import file ${BASEURI}${THM_BASEURI}${EXO_BASEURI}" FILE_URI do if [ -z "${FILE_URI}" ] then break fi FILE_ID=`new_file "${THEME_ID}" "${EXO_ID}" "${THM_BASEURI}${EXO_BASEURI}${FILE_URI}"` if [ -z "$FILE_ID" ]; then echo -e "\e[31;01m!!! An error occured during file import! Please check path.\e[00m" else echo -e "\e[32m>>> New file added: $FILE_ID - $FILE_URI\e[00m" fi done LAST=$EXO_ID EXO_NUM=$((EXO_NUM + 1)) echo echo -e "\e[36m--- Filling exercice ${EXO_NUM} in theme ${THEME_NAME}\e[00m" done echo done