#!/usr/bin/with-contenv bash # shellcheck shell=bash MIGRATIONS_DIR="/migrations" MIGRATIONS_HISTORY="/config/.migrations" echo -e " Migrations : Started" if [[ ! -d ${MIGRATIONS_DIR} ]]; then echo -e " Migrations : No migrations found" exit fi for MIGRATION in $(find ${MIGRATIONS_DIR}/* | sort -n); do NAME="$(basename "${MIGRATION}")" if [[ -f ${MIGRATIONS_HISTORY} ]] && grep -Fxq "${NAME}" ${MIGRATIONS_HISTORY}; then echo -e " Migrations : ${NAME} › Skipped" continue fi echo -e " Migrations : ${NAME} › Executing" chmod +x "${MIGRATION}" # # # Execute migration script in a subshell to prevent it from modifying the current environment # # ("${MIGRATION}") EXIT_CODE=$? if [[ ${EXIT_CODE} -ne 0 ]]; then echo -e " Migrations : ${NAME} › Failed with exit code ${EXIT_CODE}" exit "${EXIT_CODE}" fi echo "${NAME}" >>${MIGRATIONS_HISTORY} echo -e " Migrations : ${NAME} › Success" done echo -e " Migrations : Complete"