Adding python conversion for TOML and YAML; slightly more verbose syntax for dockerargs

This commit is contained in:
Omar Ahmad
2019-08-15 10:52:20 -04:00
parent 21e58d0588
commit 4a0d85f51a
4 changed files with 82 additions and 3 deletions

@ -15,7 +15,21 @@ if [ "${LOG_FILE}" == "" ]; then
touch ${LOG_FILE}
fi
CONFIG=${HOME_DIR}/config.json
if [ -f "${HOME_DIR}/config.toml" ]; then
python3 -c "with open('${HOME_DIR}/config.toml') as ct, open('${HOME_DIR}/config.json', 'w') as cj: import toml; import json; json.dump(list(toml.load(ct).values()), cj)"
elif [ -f "${HOME_DIR}/config.yml" ]; then
python3 -c "with open('${HOME_DIR}/config.yml') as cy, open('${HOME_DIR}/config.json', 'w') as cj: import yaml; import json; json.dump(list(yaml.safe_load(cy).values()), cj)"
elif [ -f "${HOME_DIR}/config.yaml" ]; then
python3 -c "with open('${HOME_DIR}/config.yaml') as cy, open('${HOME_DIR}/config.json', 'w') as cj: import yaml; import json; json.dump(list(yaml.safe_load(cy).values()), cj)"
fi
if [ -f "${HOME_DIR}/config.json" ]; then
CONFIG=${HOME_DIR}/config.json
else
echo "NO CONFIG FILE FOUND"
fi
DOCKER_SOCK=/var/run/docker.sock
CRONTAB_FILE=/etc/crontabs/docker
@ -49,7 +63,22 @@ slugify() {
make_image_cmd() {
DOCKERARGS=$(echo ${1} | jq -r .dockerargs)
VOLUMES=$(echo ${1} | jq -r '.volumes | map(" -v " + .) | join("")')
PORTS=$(echo ${1} | jq -r '.ports | map(" -p " + .) | join("")')
EXPOSE=$(echo ${1} | jq -r '.expose | map(" --expose " + .) | join("")')
# We'll add name in, if it exists
NAME=$(echo ${1} | jq -r 'select(.name != null) | .name')
NETWORK=$(echo ${1} | jq -r 'select(.network != null) | .network')
ENVIRONMENT=$(echo ${1} | jq -r '.environment | map(" -e " + .) | join("")')
# echo ${1} | jq -r '.environment | join("\n")' > ${PWD}/${NAME}.env
# ENVIRONMENT=" --env-file ${PWD}/${NAME}.env"
if [ "${DOCKERARGS}" == "null" ]; then DOCKERARGS=; fi
if [ ! -z "${NAME}" ]; then DOCKERARGS="${DOCKERARGS} --rm --name ${NAME} "; fi
if [ ! -z "${NETWORK}" ]; then DOCKERARGS="${DOCKERARGS} --network ${NETWORK} "; fi
if [ ! -z "${VOLUMES}" ]; then DOCKERARGS="${DOCKERARGS}${VOLUMES}"; fi
if [ ! -z "${ENVIRONMENT}" ]; then DOCKERARGS="${DOCKERARGS}${ENVIRONMENT}"; fi
if [ ! -z "${PORTS}" ]; then DOCKERARGS="${DOCKERARGS}${PORTS}"; fi
if [ ! -z "${EXPOSE}" ]; then DOCKERARGS="${DOCKERARGS}${EXPOSE}"; fi
IMAGE=$(echo ${1} | jq -r .image | envsubst)
TMP_COMMAND=$(echo ${1} | jq -r .command)
echo "docker run ${DOCKERARGS} ${IMAGE} ${TMP_COMMAND}"
@ -80,6 +109,7 @@ for CONTAINER_NAME in \$CONTAINERS; do
done
EOF
echo "/bin/bash ${HOME_DIR}/projects/${SCRIPT_NAME}.sh"
# cat "/bin/bash ${HOME_DIR}/projects/${SCRIPT_NAME}.sh"
else
echo "docker exec ${DOCKERARGS} ${CONTAINER} ${TMP_COMMAND}"
fi
@ -236,7 +266,7 @@ if [ "$1" = "crond" ]; then
if [ -f ${CONFIG} ]; then
build_crontab
else
echo "Unable to find ${HOME_DIR}/config.json"
echo "Unable to find ${CONFIG}"
fi
fi