From 491b6855c4e164c64985ce21788fd5d4438dd691 Mon Sep 17 00:00:00 2001 From: thelamer Date: Fri, 17 May 2019 14:38:34 -0700 Subject: [PATCH] reworking the logic to copy files instead of folders for services and adding more logic gaurds to prevent us from attempting to run directories or copy over files if they match --- root/etc/cont-init.d/99-custom-files | 45 ++++++++++++++++++++++++++ root/etc/cont-init.d/99-custom-scripts | 30 ----------------- 2 files changed, 45 insertions(+), 30 deletions(-) create mode 100644 root/etc/cont-init.d/99-custom-files delete mode 100644 root/etc/cont-init.d/99-custom-scripts diff --git a/root/etc/cont-init.d/99-custom-files b/root/etc/cont-init.d/99-custom-files new file mode 100644 index 0000000..689d58d --- /dev/null +++ b/root/etc/cont-init.d/99-custom-files @@ -0,0 +1,45 @@ +#!/usr/bin/with-contenv bash + +# Directories +SCRIPTS_DIR="/config/custom-init-scripts" +SERVICES_DIR="/config/custom-services.d" + +# Make sure custom directories exist and have files in them +if ([ -e "${SCRIPTS_DIR}" ] && \ + [ -n "$(/bin/ls -A ${SCRIPTS_DIR} 2>/dev/null)" ]) || \ + ([ -e "${SERVICES_DIR}" ] && \ + [ -n "$(/bin/ls -A ${SERVICES_DIR} 2>/dev/null)" ]); then + if [ -n "$(/bin/ls -A ${SCRIPTS_DIR} 2>/dev/null)" ]; then + echo "[custom-init] files found in ${SCRIPTS_DIR} executing" + for SCRIPT in ${SCRIPTS_DIR}/*; do + NAME="$(basename "${SCRIPT}")" + if [ -f "${SCRIPT}" ]; then + echo "[custom-init] ${NAME}: executing..." + /bin/bash ${SCRIPT} + echo "[custom-init] ${NAME}: exited $?" + elif [ ! -f "${SCRIPT}" ]; then + echo "[custom-init] ${NAME}: is not a file" + fi + done + fi + if [ -n "$(/bin/ls -A ${SERVICES_DIR} 2>/dev/null)" ]; then + echo "[custom-init] service files found in ${SERVICES_DIR} copying" + for SERVICE in ${SERVICES_DIR}/*; do + NAME="$(basename "${SERVICE}")" + if ! $(cmp -s ${SERVICE} /etc/services.d/${NAME}/run) && \ + [ -f "${SERVICE}" ]; then + echo "[custom-init] ${NAME}: new file detected copying..." + mkdir -p /etc/services.d/${NAME}/ + cp ${SERVICE} /etc/services.d/${NAME}/run + chmod +x /etc/services.d/${NAME}/run + echo "[custom-init] ${NAME}: copied" + elif [ ! -f "${SERVICE}" ]; then + echo "[custom-init] ${NAME}: is not a file" + else + echo "[custom-init] ${NAME}: is up to date" + fi + done + fi +else + echo "[custom-init] no custom files found exiting..." +fi diff --git a/root/etc/cont-init.d/99-custom-scripts b/root/etc/cont-init.d/99-custom-scripts deleted file mode 100644 index 9f0d035..0000000 --- a/root/etc/cont-init.d/99-custom-scripts +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/with-contenv bash - -# Make sure custom script directory exists and has files in it -SCRIPTS_DIR="/config/custom-init-scripts" -if [ -e "${SCRIPTS_DIR}" ] && \ - [ -n "$(/bin/ls -A ${SCRIPTS_DIR} 2>/dev/null)" ]; then - echo "[custom-init] files found in ${SCRIPTS_DIR} executing" - for SCRIPT in ${SCRIPTS_DIR}/*; do - echo "[custom-init] ${SCRIPT}: executing..." - /bin/bash ${SCRIPT} - echo "[custom-init] ${SCRIPT}: exited $?" - done -else - echo "[custom-init] no custom scripts found exiting..." -fi - -# Make sure custom services directory exists and has files in it -SERVICES_DIR="/config/custom-services.d" -if [ -e "${SERVICES_DIR}" ] && \ - [ -n "$(/bin/ls -A ${SERVICES_DIR} 2>/dev/null)" ]; then - echo "[custom-init] service folders found in ${SERVICES_DIR} executing" - for SERVICE in ${SERVICES_DIR}/*; do - echo "[custom-init] ${SERVICE}: copying..." - cp -r ${SERVICE} /etc/services.d/ - chmod +x /etc/services.d/${SERVICE}/run - echo "[custom-init] ${SERVICE}: done" - done -else - echo "[custom-init] no custom services found exiting..." -fi