Newer
Older
vueDummy / lazyDir / container-entrypoint.sh
#!/usr/bin/env bash

# Configure bash behavior
set -o errexit  # exit on failed command
set -o nounset  # exit on undeclared variables
set -o pipefail # exit on any failed command in pipes
# set -o xtrace # debug if needed

# Set magic variables for current file & dir
__DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
__FILE="${__DIR}/$(basename "${BASH_SOURCE[0]}")"
__BASE="$(basename ${__FILE} .sh)"
__ROOT="$(cd "$(dirname "${__DIR}")" && pwd)"
__CWD="$(pwd)"

# Explicitely define TMPDIR if required
: ${TMPDIR:='/tmp'}

# Define temp file(s)
TMP_LOG="$(mktemp --tmpdir="${TMPDIR}" "${__BASE}_log.XXXXXXXXXX")"

# Define variables and their default values
: ${USER:=nodejs}
: ${LIB_DIR:=${__CWD}/node_modules}
: ${LOG_DIR:='/var/tmp'}
: ${MODULES_INIT_LOG:="${LOG_DIR}/modules-init.log"}

# Clean exit
on_exit () {
  rm -f "${TMP_LOG}"
  test ! -L "${LIB_DIR}" || rm -f "${LIB_DIR}"
  cd "${__CWD}"
}

trap "on_exit" EXIT


########
# Main #
########
# Synchronize or link node_modules from user home if needed
if [ ! -L "${LIB_DIR}" -a -d "${LIB_DIR}" ]; then
  echo "Synchronize modules directory" &>> "${MODULES_INIT_LOG}"
  rsync -halvi --delete "/home/${USER}/node_modules/" "${LIB_DIR}/"
elif [ ! -e "${LIB_DIR}" ]; then
  ln -s /home/${USER}/node_modules "${LIB_DIR}"
fi

# Using bash login
exec "$@"