Merge pull request #2 from SimplicityGuy/additional-fixes

fix: additional fixes
This commit is contained in:
Robert Wlodarczyk 2022-07-16 11:28:48 -07:00 committed by GitHub
commit c530324db3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 26 deletions

8
.gitignore vendored
View File

@ -1,6 +1,10 @@
.idea
*.iml
config.json
.vscode
.DS_Store
config.json
config.working.json
jobs/
projects/

View File

@ -16,7 +16,7 @@ fi
mkdir -p "${HOME_DIR}"/jobs "${HOME_DIR}"/projects
if [ -z "${DOCKER_HOST}" ] && [ -a "${DOCKER_PORT_2375_TCP}" ]; then
export DOCKER_HOST='tcp://docker:2375'
export DOCKER_HOST="tcp://docker:2375"
fi
if [ "${LOG_FILE}" == "" ]; then
@ -37,7 +37,7 @@ normalize_config() {
elif [ -f "${HOME_DIR}/config.yaml" ]; then
JSON_CONFIG="$(rq -y <<< "$(cat "${HOME_DIR}"/config.yaml)")"
fi
jq -r 'map(.)' <<< "${JSON_CONFIG}" > "${HOME_DIR}"/config.working.json
jq -r 'to_entries | map_values(.value + { name: .key })' <<< "${JSON_CONFIG}" > "${HOME_DIR}"/config.working.json
}
ensure_docker_socket_accessible() {
@ -67,19 +67,19 @@ 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("")')
if [ "${DOCKERARGS}" == "null" ]; then DOCKERARGS=; fi
VOLUMES=$(echo "${1}" | jq -r 'select(.volumes != null) | .volumes | map(" -v " + .) | join("")')
PORTS=$(echo "${1}" | jq -r 'select(.ports != null) | .ports | map(" -p " + .) | join("")')
EXPOSE=$(echo "${1}" | jq -r 'select(.expose != null) | .expose | map(" --expose " + .) | join("")')
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("")')
if [ "${DOCKERARGS}" == "null" ]; then DOCKERARGS=; fi
if [ -n "${NAME}" ]; then DOCKERARGS="${DOCKERARGS} --rm --name ${NAME} "; fi
if [ -n "${NETWORK}" ]; then DOCKERARGS="${DOCKERARGS} --network ${NETWORK} "; fi
if [ -n "${VOLUMES}" ]; then DOCKERARGS="${DOCKERARGS}${VOLUMES}"; fi
if [ -n "${ENVIRONMENT}" ]; then DOCKERARGS="${DOCKERARGS}${ENVIRONMENT}"; fi
if [ -n "${PORTS}" ]; then DOCKERARGS="${DOCKERARGS}${PORTS}"; fi
if [ -n "${EXPOSE}" ]; then DOCKERARGS="${DOCKERARGS}${EXPOSE}"; fi
ENVIRONMENT=$(echo "${1}" | jq -r 'select(.environment != null) | .environment | map(" -e " + .) | join("")')
if [ -n "${NAME}" ]; then DOCKERARGS+=" --rm --name ${NAME} "; fi
if [ -n "${NETWORK}" ]; then DOCKERARGS+=" --network ${NETWORK} "; fi
if [ -n "${VOLUMES}" ]; then DOCKERARGS+="${VOLUMES}"; fi
if [ -n "${ENVIRONMENT}" ]; then DOCKERARGS+="${ENVIRONMENT}"; fi
if [ -n "${PORTS}" ]; then DOCKERARGS+="${PORTS}"; fi
if [ -n "${EXPOSE}" ]; then DOCKERARGS+="${EXPOSE}"; fi
IMAGE=$(echo "${1}" | jq -r .image | envsubst)
TMP_COMMAND=$(echo "${1}" | jq -r .command)
echo "docker run ${DOCKERARGS} ${IMAGE} ${TMP_COMMAND}"
@ -104,8 +104,8 @@ cat << EOF > "${HOME_DIR}"/projects/"${SCRIPT_NAME}".sh
set -e
CONTAINERS=\$(docker ps --format '{{.Names}}' | grep -E "^${PROJECT}_${CONTAINER}.[0-9]+")
for CONTAINER_NAME in \$CONTAINERS; do
docker exec ${DOCKERARGS} \${CONTAINER_NAME} ${TMP_COMMAND}
for CONTAINER_NAME in \${CONTAINERS}; do
docker exec "${DOCKERARGS} \${CONTAINER_NAME} ${TMP_COMMAND}"
done
EOF
echo "/bin/bash ${HOME_DIR}/projects/${SCRIPT_NAME}.sh"
@ -186,23 +186,26 @@ function build_crontab() {
ONSTART=()
while read -r i ; do
SCHEDULE=$(jq -r .["$i"].schedule "${CONFIG}" | sed 's/\*/\\*/g')
if [ "${SCHEDULE}" == "null" ]; then
echo "Schedule Missing: $(jq -r .["$i"].schedule "${CONFIG}")"
echo "'schedule' missing: $(jq -r .["$i"].schedule "${CONFIG}")"
continue
fi
SCHEDULE=$(parse_schedule "${SCHEDULE}" | sed 's/\\//g')
COMMAND=$(jq -r .["$i"].command "${CONFIG}")
if [ "${COMMAND}" == "null" ]; then
echo "Command Missing: '${COMMAND}'"
echo "'command' missing: '${COMMAND}'"
continue
fi
COMMENT=$(jq -r .["$i"].comment "${CONFIG}")
if [ "${COMMENT}" != "null" ]; then
echo "# ${COMMENT}" >> ${CRONTAB_FILE}
COMMENT=" ${COMMENT}"
echo "#${COMMENT}" >> ${CRONTAB_FILE}
else
# Reset COMMENT to empty rather than keep the 'null' value.
COMMENT=" "
fi
SCRIPT_NAME=$(jq -r .["$i"].name "${CONFIG}")
@ -216,8 +219,7 @@ cat << EOF > "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
#!/usr/bin/env bash
set -e
echo "Start Cronjob **${SCRIPT_NAME}** ${COMMENT}"
echo "start cron job **${SCRIPT_NAME}**${COMMENT}"
$(make_cmd "$(jq -c .["$i"] "${CONFIG}")")
EOF
TRIGGER=$(jq -r .["$i"].trigger "${CONFIG}")
@ -225,14 +227,14 @@ EOF
while read -r j ; do
TRIGGER_COMMAND=$(jq .["$i"].trigger["$j"].command "${CONFIG}")
if [ "${TRIGGER_COMMAND}" == "null" ]; then
echo "Command Missing: '${TRIGGER_COMMAND}'"
echo "'command' missing: '${TRIGGER_COMMAND}'"
continue
fi
make_cmd "${TRIGGER_COMMAND}" >> "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
done < <(jq -r '.['"$i"'].trigger|keys[]' "${CONFIG}")
fi
echo "echo \"End Cronjob **${SCRIPT_NAME}** ${COMMENT}\"" >> "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
echo "echo \"end cron job **${SCRIPT_NAME}**${COMMENT}\"" >> "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
echo "${SCHEDULE} ${COMMAND}" >> ${CRONTAB_FILE}
@ -255,7 +257,7 @@ start_app() {
normalize_config
export CONFIG=${HOME_DIR}/config.working.json
if [ ! -f "${CONFIG}" ]; then
echo "Unable to find ${CONFIG}."
echo "generated ${CONFIG} missing."
exit 1
fi
if [ "${1}" == "crond" ]; then