|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +set -e |
| 4 | +set -u |
| 5 | +set -o pipefail |
| 6 | + |
| 7 | +############################################################ |
| 8 | +# Functions |
| 9 | +############################################################ |
| 10 | + |
| 11 | +### |
| 12 | +### Execute project-supplied scripts |
| 13 | +### |
| 14 | +execute_project_scripts() { |
| 15 | + local debug="${1}" |
| 16 | + local script_dir |
| 17 | + local script_name |
| 18 | + local DEVILBOX_PROJECT_DIR |
| 19 | + local DEVILBOX_PROJECT_NAME |
| 20 | + local DEVILBOX_PROJECT_DOCROOT |
| 21 | + |
| 22 | + for DEVILBOX_PROJECT_DIR in /shared/httpd/*; do |
| 23 | + |
| 24 | + script_dir=${DEVILBOX_PROJECT_DIR}/.devilbox/autostart |
| 25 | + |
| 26 | + if [ -d "${DEVILBOX_PROJECT_DIR}" ] && [ -d "${script_dir}" ]; then |
| 27 | + |
| 28 | + DEVILBOX_PROJECT_NAME=$(basename "${DEVILBOX_PROJECT_DIR}") |
| 29 | + export DEVILBOX_PROJECT_NAME |
| 30 | + |
| 31 | + DEVILBOX_PROJECT_DOCROOT=${DEVILBOX_PROJECT_DIR}/$(env_get HTTPD_DOCROOT_DIR "htdocs") |
| 32 | + export DEVILBOX_PROJECT_DOCROOT |
| 33 | + |
| 34 | + script_files="$(find -L "${script_dir}" -type f -iname '*.sh' | sort -n)" |
| 35 | + |
| 36 | + # loop over them line by line |
| 37 | + IFS=' |
| 38 | + ' |
| 39 | + for script_f in ${script_files}; do |
| 40 | + |
| 41 | + script_name="$(basename "${script_f}")" |
| 42 | + |
| 43 | + log "info" "Executing project startup script: ${DEVILBOX_PROJECT_NAME}:${script_name}" "${debug}" |
| 44 | + |
| 45 | + if ! bash "${script_f}" "${debug}"; then |
| 46 | + log "err" "Failed to execute script" "${debug}" |
| 47 | + exit 1 |
| 48 | + fi |
| 49 | + |
| 50 | + done |
| 51 | + fi |
| 52 | + done |
| 53 | +} |
| 54 | + |
| 55 | +############################################################ |
| 56 | +# Sanity Checks |
| 57 | +############################################################ |
| 58 | + |
| 59 | +# find, sort, and basename are already checked in ./310-custom-startup-scripts.sh |
0 commit comments