121 lines
3.5 KiB
Bash
121 lines
3.5 KiB
Bash
#!/bin/bash
|
|
|
|
caddy_add_packages () {
|
|
local ifile; local bin; local pkgs; local pkg; local ipkgs
|
|
clean () {
|
|
local tmp;local tmp2; local append
|
|
if [[ -f $1 ]]; then
|
|
tmp=$(sed '/^[[:space:]]*#[^!]/d; /#$/d' $1)
|
|
else
|
|
tmp=$1
|
|
fi
|
|
echo "$tmp $2" | xargs -n1 | sort -u | xargs | sed "s# # #g"
|
|
|
|
}
|
|
[[ -f $1 ]] && pkgs=" $(clean $1)"
|
|
[[ $BUILDING && -f $BUILD_DIR/caddy.pkgs ]] && pkgs=$(clean $BUILD_DIR/caddy.pkgs "$pkgs")
|
|
# echo pkgs after build
|
|
# echo $pkgs
|
|
[[ -f $CADDY_CONF/caddy.pkgs ]] && pkgs=$(clean $CADDY_CONF/caddy.pkgs "$pkgs")
|
|
# echo pkgs after conf
|
|
# echo $pkgs
|
|
[[ ! $pkgs ]] && echo "no packages requested, nothing to do" && return 0
|
|
echo "--- packages requested to install ----"
|
|
echo $pkgs
|
|
echo "-----------"
|
|
ifile=${CADDY_HOME}/bin/installed.pkgs
|
|
# uncomment for testing
|
|
# /bin/cp installed.pkgs $ifile
|
|
[[ -f $ifile ]] && ipkgs=$(clean $ifile)
|
|
echo "--- currently installed packages ----"
|
|
[[ $ipkgs ]] && echo $ipkgs || echo NONE
|
|
echo "-----------"
|
|
for pkg in $ipkgs; do
|
|
# echo installed packaged $pkg
|
|
pkgs=${pkgs/${pkg}/};
|
|
done
|
|
[[ ! $(clean $pkgs) ]] && echo "no new packages to add, nothing to do" && return 0
|
|
echo "--- packages that need adding ----"
|
|
echo $pkgs
|
|
echo "-----------"
|
|
bin=${2:-$CADDY_BIN}
|
|
bin=${bin:-$(command -v caddy)}
|
|
# [[ ! $bin ]] && echo no caddy binary found && return 1
|
|
[[ ! -x $bin ]] && echo ERROR: can not add packages, no caddy binary found at $bin && return 1
|
|
echo "------- ADDING CADDY PACKAGES ------------"
|
|
if ! $bin add-package $pkgs >/dev/null 2>&1; then
|
|
echo Error: Aborting further package installs and reverting to last good binary
|
|
return 2
|
|
else
|
|
echo packages
|
|
echo $pkgs
|
|
echo added successfully
|
|
echo $pkgs >> $CADDY_HOME/bin/installed.pkgs
|
|
echo "---"
|
|
echo currently installed packages
|
|
cat $CADDY_HOME/bin/installed.pkgs
|
|
echo installed modules from these packages
|
|
$bin list-modules | sed '1,/Standard modules/d;/Non-standard modules/,$d'
|
|
echo "-----------------------------------"
|
|
fi
|
|
}
|
|
|
|
caddy_get_conf () {
|
|
local conf
|
|
cd $CADDY_CONF || { echo could not enter conf directory in container; return 2; }
|
|
if [[ $1 ]];then
|
|
[[ -f $1 ]] && conf=$1 || conf=$1.conf
|
|
else
|
|
conf=.Caddyfile
|
|
fi
|
|
echo "$CADDY_CONF/$conf"
|
|
}
|
|
|
|
|
|
caddy () {
|
|
|
|
if [[ ! $CADDY_HOME ]]; then
|
|
echo caddy run environment is NOT set
|
|
echo this is an error as the image build should set this
|
|
echo attempting to recover by sourcing the environment now
|
|
echo at $ENV_DIR/caddy.env
|
|
if [[ -f $ENV_DIR/caddy.env ]]; then
|
|
source $ENV_DIR/caddy.env
|
|
else
|
|
echo default environment can not be sourced at $ENV_DIR/caddy.env
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
[[ ! $CADDY_BIN ]] && CADDY_BIN is not set unable to find caddy binary
|
|
[ ! -f "$CADDY_BIN" ] && echo caddy binary file at $CADDY_BIN does not exist && return 1
|
|
[ ! -x "$CADDY_BIN" ] && echo caddy binary file $CADDY_BIN is not executable && return 1
|
|
|
|
case "$1" in
|
|
start)
|
|
;&
|
|
stop)
|
|
;&
|
|
validate)
|
|
;&
|
|
run)
|
|
cmd=$1;shift 1
|
|
conf=$(caddy_get_conf $1)
|
|
if [[ -f $conf ]]; then
|
|
# echo checking for any run time packages to add...
|
|
# caddy_add_packages
|
|
echo running: $CADDY_BIN $cmd --config $conf --adapter caddyfile
|
|
$CADDY_BIN $cmd --config $conf --adapter caddyfile
|
|
return $?
|
|
else
|
|
echo no configuration file found at $conf in the container
|
|
echo make sure you have mounted one from the host into /opt/caddy/conf
|
|
return 1
|
|
fi
|
|
;;
|
|
*)
|
|
$CADDY_BIN "$@"
|
|
|
|
esac
|
|
|
|
} |