mirror of
				https://github.com/casjaysdevdocker/enclosed
				synced 2025-11-04 07:02:14 -05:00 
			
		
		
		
	🗃️ Committing everything that changed 🗃️
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				release-tag / release-image (push) Successful in 44m35s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	release-tag / release-image (push) Successful in 44m35s
				
			Dockerfile .env.scripts .gitattributes .gitignore rootfs/.gitea/ rootfs/usr/local/bin/entrypoint.sh rootfs/usr/local/bin/pkmgr rootfs/usr/local/etc/docker/functions/entrypoint.sh rootfs/usr/local/share/template-files/config/env/default.sample
This commit is contained in:
		@@ -1,13 +1,13 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# shellcheck shell=bash
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
##@Version           :  202409121702-git
 | 
			
		||||
##@Version           :  202509161147-git
 | 
			
		||||
# @@Author           :  Jason Hempstead
 | 
			
		||||
# @@Contact          :  jason@casjaysdev.pro
 | 
			
		||||
# @@License          :  WTFPL
 | 
			
		||||
# @@License          :  LICENSE.md
 | 
			
		||||
# @@ReadME           :  entrypoint.sh --help
 | 
			
		||||
# @@Copyright        :  Copyright: (c) 2024 Jason Hempstead, Casjays Developments
 | 
			
		||||
# @@Created          :  Thursday, Sep 12, 2024 17:02 EDT
 | 
			
		||||
# @@Copyright        :  Copyright: (c) 2025 Jason Hempstead, Casjays Developments
 | 
			
		||||
# @@Created          :  Tuesday, Sep 16, 2025 11:47 EDT
 | 
			
		||||
# @@File             :  entrypoint.sh
 | 
			
		||||
# @@Description      :  Entrypoint file for enclosed
 | 
			
		||||
# @@Changelog        :  New script
 | 
			
		||||
@@ -18,12 +18,13 @@
 | 
			
		||||
# @@sudo/root        :  no
 | 
			
		||||
# @@Template         :  other/docker-entrypoint
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# shellcheck disable=SC2016
 | 
			
		||||
# shellcheck disable=SC2031
 | 
			
		||||
# shellcheck disable=SC2120
 | 
			
		||||
# shellcheck disable=SC2155
 | 
			
		||||
# shellcheck disable=SC2199
 | 
			
		||||
# shellcheck disable=SC2317
 | 
			
		||||
# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2120,SC2155,SC2199,SC2317,SC2329
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
set -e
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# run trap command on exit
 | 
			
		||||
trap 'echo "❌ Fatal error, killing container"; kill -TERM 1' ERR
 | 
			
		||||
trap 'retVal=$?;[ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE";exit $retVal' SIGINT SIGTERM SIGPWR
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
 | 
			
		||||
[ -f "/config/.debug" ] && [ -z "$DEBUGGER_OPTIONS" ] && export DEBUGGER_OPTIONS="$(<"/config/.debug")" || DEBUGGER_OPTIONS="${DEBUGGER_OPTIONS:-}"
 | 
			
		||||
@@ -34,7 +35,7 @@ PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin"
 | 
			
		||||
# Set bash options
 | 
			
		||||
SCRIPT_FILE="$0"
 | 
			
		||||
CONTAINER_NAME="enclosed"
 | 
			
		||||
SCRIPT_NAME="$(basename "$SCRIPT_FILE" 2>/dev/null)"
 | 
			
		||||
SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)"
 | 
			
		||||
CONTAINER_NAME="${ENV_CONTAINER_NAME:-$CONTAINER_NAME}"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# remove whitespaces from beginning argument
 | 
			
		||||
@@ -56,7 +57,7 @@ case "$1" in
 | 
			
		||||
-h | --help)
 | 
			
		||||
  shift 1
 | 
			
		||||
  echo 'Docker container for '$CONTAINER_NAME''
 | 
			
		||||
  echo "Usage: $CONTAINER_NAME [cron exec start init shell certbot ssl procs ports healthcheck backup command]"
 | 
			
		||||
  echo "Usage: $CONTAINER_NAME [help tail cron exec start init shell certbot ssl procs ports healthcheck backup command]"
 | 
			
		||||
  echo ""
 | 
			
		||||
  exit 0
 | 
			
		||||
  ;;
 | 
			
		||||
@@ -77,23 +78,27 @@ unset set_env
 | 
			
		||||
# User to use to launch service - IE: postgres
 | 
			
		||||
RUNAS_USER="root" # normally root
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# User and group in which the service switches to - IE: nginx,apache,mysql,postgres
 | 
			
		||||
SERVICE_USER="enclosed"  # execute command as another user
 | 
			
		||||
SERVICE_GROUP="enclosed" # Set the service group
 | 
			
		||||
# Set user and group from env
 | 
			
		||||
SERVICE_USER="${PUID:-$SERVICE_USER}"
 | 
			
		||||
SERVICE_GROUP="${PGID:-$SERVICE_GROUP}"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Set user and group ID
 | 
			
		||||
SERVICE_UID="0" # set the user id
 | 
			
		||||
SERVICE_GID="0" # set the group id
 | 
			
		||||
SERVICE_UID="${SERVICE_UID:-0}" # set the user id
 | 
			
		||||
SERVICE_GID="${SERVICE_GID:-0}" # set the group id
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Primary server port- will be added to server ports
 | 
			
		||||
WEB_SERVER_PORT="" # port : 80,443
 | 
			
		||||
# User and group in which the service switches to - IE: nginx,apache,mysql,postgres
 | 
			
		||||
SERVICE_USER="${SERVICE_USER:-$enclosed}"  # execute command as another user
 | 
			
		||||
SERVICE_GROUP="${SERVICE_GROUP:-enclosed}" # Set the service group
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Secondary ports
 | 
			
		||||
SERVER_PORTS="" # specifiy other ports
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Primary server port- will be added to server ports
 | 
			
		||||
WEB_SERVER_PORT="" # port : 80,443
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Healthcheck variables
 | 
			
		||||
HEALTH_ENABLED="yes" # enable healthcheck [yes/no]
 | 
			
		||||
SERVICES_LIST="tini,enclosed,nginx"
 | 
			
		||||
SERVICES_LIST="tini" # comma seperated list of processes for the healthcheck
 | 
			
		||||
HEALTH_ENDPOINTS=""  # url endpoints: [http://localhost/health,http://localhost/test]
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Update path var
 | 
			
		||||
@@ -159,10 +164,21 @@ export ENTRYPOINT_INIT_FILE="${ENTRYPOINT_INIT_FILE:-/config/.entrypoint.done}"
 | 
			
		||||
export ENTRYPOINT_DATA_INIT_FILE="${ENTRYPOINT_DATA_INIT_FILE:-/data/.docker_has_run}"
 | 
			
		||||
export ENTRYPOINT_CONFIG_INIT_FILE="${ENTRYPOINT_CONFIG_INIT_FILE:-/config/.docker_has_run}"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ -n "$CONTAINER_WEB_SERVER_WWW_REPO" ]; then
 | 
			
		||||
  www_temp_dir="/tmp/git/$(basename -- "$CONTAINER_WEB_SERVER_WWW_REPO")"
 | 
			
		||||
  rm -Rf "${WWW_ROOT_DIR:?}"/* "${www_temp_dir:?}"/*
 | 
			
		||||
  mkdir -p "$WWW_ROOT_DIR" "$www_temp_dir"
 | 
			
		||||
  git clone -q "$CONTAINER_WEB_SERVER_WWW_REPO" "$www_temp_dir" 2>/dev/null
 | 
			
		||||
  rm -Rf "$www_temp_dir/.git" "$www_temp_dir"/.git*
 | 
			
		||||
  rsync -ra "$www_temp_dir/" "$WWW_ROOT_DIR" --delete >/dev/null 2>&1
 | 
			
		||||
  rm -Rf "$www_temp_dir"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# variables based on env/files
 | 
			
		||||
[ -f "/config/enable/ssl" ] && SSL_ENABLED="yes"
 | 
			
		||||
[ -f "/config/enable/ssh" ] && SSH_ENABLED="yes"
 | 
			
		||||
[ "$WEB_SERVER_PORT" = "443" ] && SSL_ENABLED="yes"
 | 
			
		||||
[ "$CONTAINER_WEB_SERVER_PROTOCOL" = "https" ] && SSL_ENABLED="yes"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# export variables
 | 
			
		||||
 | 
			
		||||
@@ -190,7 +206,7 @@ ENV_PORTS="$(__format_variables "$ENV_PORTS" || false)"
 | 
			
		||||
WEB_SERVER_PORTS="$(__format_variables "$WEB_SERVER_PORTS" || false)"
 | 
			
		||||
ENV_PORTS="$(__format_variables "$SERVER_PORTS" "$WEB_SERVER_PORTS" "$ENV_PORTS" "$SERVER_PORTS" || false)"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
#
 | 
			
		||||
# Remove the commas from env
 | 
			
		||||
HEALTH_ENDPOINTS="${HEALTH_ENDPOINTS//,/ }"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# create required directories
 | 
			
		||||
@@ -243,6 +259,8 @@ if [ -f "$ENTRYPOINT_PID_FILE" ]; then
 | 
			
		||||
  touch "$ENTRYPOINT_PID_FILE"
 | 
			
		||||
else
 | 
			
		||||
  echo "$$" >"$ENTRYPOINT_PID_FILE"
 | 
			
		||||
  # Clean any stale PID files on first run
 | 
			
		||||
  rm -f /run/init.d/*.pid 2>/dev/null || true
 | 
			
		||||
fi
 | 
			
		||||
if [ -f "$ENTRYPOINT_INIT_FILE" ]; then
 | 
			
		||||
  ENTRYPOINT_MESSAGE="no" ENTRYPOINT_FIRST_RUN="no"
 | 
			
		||||
@@ -255,9 +273,9 @@ if [ "$ENTRYPOINT_FIRST_RUN" != "no" ]; then
 | 
			
		||||
  fi
 | 
			
		||||
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
  # Set reusable variables
 | 
			
		||||
  { { [ -w "/etc" ] && [ ! -e "/etc/hosts" ]; } || [ -w "/etc/hosts" ]; } && UPDATE_FILE_HOSTS="yes"
 | 
			
		||||
  { { [ -w "/etc" ] && [ ! -e "/etc/timezone" ]; } || [ -w "/etc/timezone" ]; } && UPDATE_FILE_TZ="yes"
 | 
			
		||||
  { { [ -w "/etc" ] && [ ! -e "/etc/resolv.conf" ]; } || [ -w "/etc/resolv.conf" ]; } && UPDATE_FILE_RESOLV="yes"
 | 
			
		||||
  { { [ -w "/etc" ] && [ ! -f "/etc/hosts" ]; } || [ -w "/etc/hosts" ]; } && UPDATE_FILE_HOSTS="yes" && touch "/etc/hosts"
 | 
			
		||||
  { { [ -w "/etc" ] && [ ! -f "/etc/timezone" ]; } || [ -w "/etc/timezone" ]; } && UPDATE_FILE_TZ="yes" && touch "/etc/timezone"
 | 
			
		||||
  { { [ -w "/etc" ] && [ ! -f "/etc/resolv.conf" ]; } || [ -w "/etc/resolv.conf" ]; } && UPDATE_FILE_RESOLV="yes" && touch "/etc/resolv.conf"
 | 
			
		||||
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
  # Set timezone
 | 
			
		||||
  [ -n "$TZ" ] && [ "$UPDATE_FILE_TZ" = "yes" ] && echo "$TZ" >"/etc/timezone"
 | 
			
		||||
@@ -274,23 +292,20 @@ if [ "$ENTRYPOINT_FIRST_RUN" != "no" ]; then
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
  # add .home domain
 | 
			
		||||
  # add .internal domain
 | 
			
		||||
  if [ "$UPDATE_FILE_HOSTS" = "yes" ] && [ -n "$HOSTNAME" ]; then
 | 
			
		||||
    __grep_test " $HOSTNAME" "/etc/hosts" || __printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "$HOSTNAME" >>"/etc/hosts"
 | 
			
		||||
    __grep_test " ${HOSTNAME%%.*}.home" "/etc/hosts" || __printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "${HOSTNAME%%.*}.home" >>"/etc/hosts"
 | 
			
		||||
    __grep_test " ${HOSTNAME%%.*}.internal" "/etc/hosts" || __printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "${HOSTNAME%%.*}.internal" >>"/etc/hosts"
 | 
			
		||||
  fi
 | 
			
		||||
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
  # add domainname
 | 
			
		||||
  if [ "$UPDATE_FILE_HOSTS" = "yes" ] && [ "$DOMAINNAME" != "home" ] && [ -n "$DOMAINNAME" ] && [ "$HOSTNAME.$DOMAINNAME" != "$DOMAINNAME" ]; then
 | 
			
		||||
  if [ "$UPDATE_FILE_HOSTS" = "yes" ] && [ "$DOMAINNAME" != "internal" ] && [ -n "$DOMAINNAME" ] && [ "$HOSTNAME.$DOMAINNAME" != "$DOMAINNAME" ]; then
 | 
			
		||||
    __grep_test " ${HOSTNAME%%.*}.$DOMAINNAME" "/etc/hosts" || __printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "${HOSTNAME%%.*}.$DOMAINNAME" >>"/etc/hosts"
 | 
			
		||||
  fi
 | 
			
		||||
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
  # Set containers hostname
 | 
			
		||||
  [ -n "$HOSTNAME" ] && [ "$UPDATE_FILE_HOSTS" = "yes" ] && echo "$HOSTNAME" >"/etc/hostname"
 | 
			
		||||
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
  # Set containers hostname with domain
 | 
			
		||||
  # [ -n "$DOMAINNAME" ] && [ "$UPDATE_FILE_HOSTS" = "yes" ] && echo "$HOSTNAME.$DOMAINNAME" >"/etc/hostname"
 | 
			
		||||
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
  if [ -f "/etc/hostname" ]; then
 | 
			
		||||
    [ -n "$(type -P hostname)" ] && hostname -F "/etc/hostname" &>/dev/null || HOSTNAME="$(<"/etc/hostname")"
 | 
			
		||||
    export HOSTNAME
 | 
			
		||||
@@ -330,6 +345,7 @@ __initialize_ssl_certs
 | 
			
		||||
if [ -f "$ENTRYPOINT_INIT_FILE" ]; then
 | 
			
		||||
  ENTRYPOINT_FIRST_RUN="no"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ -d "/config" ]; then
 | 
			
		||||
  echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_INIT_FILE"
 | 
			
		||||
fi
 | 
			
		||||
@@ -338,6 +354,7 @@ fi
 | 
			
		||||
if [ -f "$ENTRYPOINT_DATA_INIT_FILE" ]; then
 | 
			
		||||
  DATA_DIR_INITIALIZED="yes"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ -d "/data" ]; then
 | 
			
		||||
  echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_DATA_INIT_FILE"
 | 
			
		||||
fi
 | 
			
		||||
@@ -345,6 +362,7 @@ fi
 | 
			
		||||
if [ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ]; then
 | 
			
		||||
  CONFIG_DIR_INITIALIZED="yes"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ -d "/config" ]; then
 | 
			
		||||
  echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_CONFIG_INIT_FILE"
 | 
			
		||||
fi
 | 
			
		||||
@@ -355,12 +373,12 @@ if [ "$ENTRYPOINT_FIRST_RUN" != "no" ]; then
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# if no pid assume container restart - clean stale files on restart
 | 
			
		||||
if [ ! -f "$ENTRYPOINT_PID_FILE" ]; then 
 | 
			
		||||
if [ ! -f "$ENTRYPOINT_PID_FILE" ]; then
 | 
			
		||||
  START_SERVICES="yes"
 | 
			
		||||
  # Clean stale pid files from previous container runs
 | 
			
		||||
  rm -f /run/__start_init_scripts.pid /run/init.d/*.pid /run/*.pid
 | 
			
		||||
  rm -f /run/__start_init_scripts.pid /run/init.d/*.pid /run/*.pid 2>/dev/null || true
 | 
			
		||||
elif [ ! -f "/run/__start_init_scripts.pid" ]; then
 | 
			
		||||
  START_SERVICES="yes" 
 | 
			
		||||
  START_SERVICES="yes"
 | 
			
		||||
fi
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
[ "$ENTRYPOINT_MESSAGE" = "yes" ] && __printf_space "40" "Container ip address is:" "$CONTAINER_IP4_ADDRESS"
 | 
			
		||||
@@ -389,7 +407,7 @@ __run_message
 | 
			
		||||
START_SERVICES="${START_SERVICES:-SYSTEM_INIT}"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
# Start all services if no pidfile
 | 
			
		||||
if [ "$START_SERVICES" = "yes" ] && [ "$1" != "backup" ] && [ "$1" != "healthcheck" ] && [ "$1" != "cron" ] && [ "$1" != "logs" ] && [ "$1" != "cron" ]; then
 | 
			
		||||
if [ "$START_SERVICES" = "yes" ] && [ "$1" != "backup" ] && [ "$1" != "healthcheck" ] && [ "$1" != "cron" ] && [ "$1" != "tail" ] && [ "$1" != "logs" ] && [ "$1" != "cron" ]; then
 | 
			
		||||
  [ "$1" = "start" ] && shift 1
 | 
			
		||||
  [ "$1" = "all" ] && shift 1
 | 
			
		||||
  [ "$1" = "init" ] && export CONTAINER_INIT="yes"
 | 
			
		||||
@@ -407,6 +425,25 @@ init)
 | 
			
		||||
  echo "Container has been Initialized"
 | 
			
		||||
  exit 0
 | 
			
		||||
  ;;
 | 
			
		||||
tail)
 | 
			
		||||
  shift 1
 | 
			
		||||
  case "$1" in
 | 
			
		||||
  null)
 | 
			
		||||
    shift $#
 | 
			
		||||
    tail -F "/dev/null"
 | 
			
		||||
    ;;
 | 
			
		||||
  app)
 | 
			
		||||
    shift $#
 | 
			
		||||
    tail -F /data/logs/*/*.log
 | 
			
		||||
    ;;
 | 
			
		||||
  -*)
 | 
			
		||||
    tail "$@"
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
    tail -F "${@:-/dev/null}"
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
  ;;
 | 
			
		||||
logs)
 | 
			
		||||
  shift 1
 | 
			
		||||
  case "$1" in
 | 
			
		||||
@@ -440,14 +477,22 @@ backup)
 | 
			
		||||
  ;;
 | 
			
		||||
# Docker healthcheck
 | 
			
		||||
healthcheck)
 | 
			
		||||
  arguments="$*"
 | 
			
		||||
  healthStatus=0
 | 
			
		||||
  services="${SERVICES_LIST:-$@}"
 | 
			
		||||
  healthEnabled="${HEALTH_ENABLED:-}"
 | 
			
		||||
  healthPorts="${WEB_SERVER_PORTS:-}"
 | 
			
		||||
  healthEndPoints="${HEALTH_ENDPOINTS:-}"
 | 
			
		||||
  SERVICES_LIST="${arguments:-$SERVICES_LIST}"
 | 
			
		||||
  services="$(echo "${SERVICES_LIST//,/ }")"
 | 
			
		||||
  healthMessage="Everything seems to be running"
 | 
			
		||||
  services="${services//,/ }"
 | 
			
		||||
  [ "$healthEnabled" = "yes" ] || exit 0
 | 
			
		||||
  if [ -d "/run/healthcheck" ] && [ "$(ls -A "/run/healthcheck" | wc -l)" -ne 0 ]; then
 | 
			
		||||
    for service in /run/healthcheck/*; do
 | 
			
		||||
      name=$(basename -- $service)
 | 
			
		||||
      services+="$name "
 | 
			
		||||
    done
 | 
			
		||||
  fi
 | 
			
		||||
  services="$(echo "$services" | tr ' ' '\n' | sort -u | grep -v '^$')"
 | 
			
		||||
  { [ "$1" = "init" ] || [ "$1" = "test" ]; } && exit 0
 | 
			
		||||
  for proc in $services; do
 | 
			
		||||
    if [ -n "$proc" ]; then
 | 
			
		||||
@@ -541,7 +586,6 @@ start)
 | 
			
		||||
    elif [ -f "/usr/local/etc/docker/init.d/$1" ]; then
 | 
			
		||||
      eval "/usr/local/etc/docker/init.d/$1" &
 | 
			
		||||
      __no_exit
 | 
			
		||||
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  ;;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,10 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# shellcheck shell=bash
 | 
			
		||||
#!/usr/bin/env sh
 | 
			
		||||
# shellcheck shell=sh
 | 
			
		||||
# shellcheck disable=SC2016
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
[ -n "$_DEBUG" ] && _DEBUG_OPTIONS="-x"
 | 
			
		||||
[ "$1" = "--debug" ] && _DEBUG_OPTIONS="-x" && shift 1
 | 
			
		||||
[ "$DEBUGGER" = "on" ] && echo "Enabling debugging" && set -x$DEBUGGER_OPTIONS
 | 
			
		||||
set -e $_DEBUG_OPTIONS
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
USER_UID="$(id -u)"
 | 
			
		||||
USER_GID="$(id -g)"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
[ -f "/etc/pkmgr/options.conf" ] && . "/etc/pkmgr/options.conf"
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
if [ -x "$(command -v apt 2>/dev/null)" ]; then
 | 
			
		||||
  export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
  pkmgr_cmd="apt"
 | 
			
		||||
@@ -19,6 +12,7 @@ if [ -x "$(command -v apt 2>/dev/null)" ]; then
 | 
			
		||||
  pkmgr_mkcache_cmd="$pkmgr_cmd update"
 | 
			
		||||
  pkmgr_update_cmd="$pkmgr_cmd upgrade -yy"
 | 
			
		||||
  pkmgr_install_cmd="$pkmgr_cmd install -yy $PKMGR_OPTS"
 | 
			
		||||
  pkmgr_install_post="$pkmgr_cmd --fix-broken install"
 | 
			
		||||
elif [ -x "$(command -v apt-get 2>/dev/null)" ]; then
 | 
			
		||||
  export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
  pkmgr_cmd="apt-get"
 | 
			
		||||
@@ -26,6 +20,7 @@ elif [ -x "$(command -v apt-get 2>/dev/null)" ]; then
 | 
			
		||||
  pkmgr_mkcache_cmd="$pkmgr_cmd update"
 | 
			
		||||
  pkmgr_update_cmd="$pkmgr_cmd upgrade -yy"
 | 
			
		||||
  pkmgr_install_cmd="$pkmgr_cmd install -yy $PKMGR_OPTS"
 | 
			
		||||
  pkmgr_install_post="$pkmgr_cmd --fix-broken install"
 | 
			
		||||
elif [ -x "$(command -v dnf 2>/dev/null)" ]; then
 | 
			
		||||
  pkmgr_cmd="dnf"
 | 
			
		||||
  pkmgr_clean_cmd="$pkmgr_cmd clean all"
 | 
			
		||||
@@ -90,13 +85,34 @@ pip)
 | 
			
		||||
  case "$1" in
 | 
			
		||||
  install)
 | 
			
		||||
    shift 1
 | 
			
		||||
    $pip_bin -m $pip_opts "$@"
 | 
			
		||||
    pkg_list="$*"
 | 
			
		||||
    for pkg in $pkg_list; do
 | 
			
		||||
      $pip_bin -m pip $pip_opts "$pkg"
 | 
			
		||||
    done
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
    $pip_bin "$@"
 | 
			
		||||
    for pkg in "$@"; do
 | 
			
		||||
      $pip_bin -m pip "$pkg"
 | 
			
		||||
    done
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
  exit $?
 | 
			
		||||
  exit
 | 
			
		||||
  ;;
 | 
			
		||||
install)
 | 
			
		||||
  shift 1
 | 
			
		||||
  [ -n "$1" ] || exit 0
 | 
			
		||||
  [ "$USER_UID" -eq 0 ] || [ "$USER" = "root" ] || pkmgr_install_cmd="sudo $pkmgr_install_cmd"
 | 
			
		||||
  if [ -f "$1" ]; then
 | 
			
		||||
    install_list="$(cat "$1")"
 | 
			
		||||
  else
 | 
			
		||||
    install_list="$*"
 | 
			
		||||
  fi
 | 
			
		||||
  for pkg in $install_list;do
 | 
			
		||||
    echo "installing packages command: $pkmgr_install_cmd $pkg"
 | 
			
		||||
    $pkmgr_install_cmd $pkg
 | 
			
		||||
    if [ -n "$pkmgr_install_post" ]; then eval $pkmgr_install_post; fi
 | 
			
		||||
  done
 | 
			
		||||
  exit
 | 
			
		||||
  ;;
 | 
			
		||||
update | upgrade)
 | 
			
		||||
  shift $#
 | 
			
		||||
@@ -114,20 +130,6 @@ clean)
 | 
			
		||||
  $pkmgr_clean_cmd
 | 
			
		||||
  exit $?
 | 
			
		||||
  ;;
 | 
			
		||||
install)
 | 
			
		||||
  shift 1
 | 
			
		||||
  [ -n "$1" ] || exit 0
 | 
			
		||||
  [ "$USER_UID" -eq 0 ] || [ "$USER" = "root" ] || pkmgr_install_cmd="sudo $pkmgr_install_cmd"
 | 
			
		||||
  if [ -f "$1" ]; then
 | 
			
		||||
    install_list="$(cat "$1")"
 | 
			
		||||
    echo 'installing packages from file with command: '$pkmgr_install_cmd' "$(<"$1")"'
 | 
			
		||||
  else
 | 
			
		||||
    install_list="$*"
 | 
			
		||||
    echo "installing packages command: $pkmgr_install_cmd $install_list"
 | 
			
		||||
  fi
 | 
			
		||||
  $pkmgr_install_cmd $install_list
 | 
			
		||||
  exit $?
 | 
			
		||||
  ;;
 | 
			
		||||
*)
 | 
			
		||||
  [ -n "$1" ] || exit 0
 | 
			
		||||
  [ "$USER_UID" -eq 0 ] || [ "$USER" = "root" ] || pkmgr_cmd="sudo $pkmgr_cmd"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user