1
0
Files
angie-conv-image/image-entry.d/00-common.envsh
Konstantin Demin 612532576b treewide: improve template expansion
also: support *.toml as extra configuration dictionaries
2025-06-19 06:00:31 +03:00

152 lines
2.9 KiB
Bash

#!/bin/sh
volume_root='/run/ngx'
target_root="${volume_root}/conf"
persist_dirs='cache lib log'
empty_dir='/var/lib/empty'
## unexporting variable in (POSIX) sh is PITA =/
# have_envvar() {
# [ -n "$1" ] || return 1
# grep -Ezq "^$1=" /proc/$$/environ || return
# }
# unexport() {
# local ___k ___v
# for ___k ; do
# [ -n "${___k}" ] || continue
# have_envvar "${___k}" || continue
# ___v=$(eval printf '%s' "\"\${${___k}}\"")
# eval "unset ${___k}"
# eval "${___k}=$(env printf '%s' \"\${___v}\")"
# done
# }
## likely the same as in https://pkg.go.dev/strconv#ParseBool
gobool_to_int() {
## local value=$1
## local default=$2
case "${1:-_}" in
1 | [Tt] | [Tt][Rr][Uu][Ee] ) echo 1 ;;
0 | [Ff] | [Ff][Aa][Ll][Ss][Ee] ) echo 0 ;;
* ) echo "${2:-error}" ;;
esac
}
[ -n "${__IEP_SRC:-}" ] || __IEP_SRC="$0"
log_always() {
if [ "${IEP_DEBUG}" = 1 ] ; then
echo "# $(date +'%Y-%m-%d %H:%M:%S.%03N %z'): ${__IEP_SRC}${*:+: $*}"
else
echo "# ${__IEP_SRC}${*:+: $*}"
fi >&2
}
log() {
[ "${IEP_VERBOSE}" = 0 ] || log_always "$@"
}
ln_s() {
if [ "${IEP_VERBOSE}" = 0 ] ; then
ln -s "$@" || return
else
ln -sv "$@" || return
fi
}
cp_a() {
if [ "${IEP_VERBOSE}" = 0 ] ; then
cp -a "$@" || return
else
cp -av "$@" || return
fi
}
ln_cp() {
if [ -h "$1" ] ; then
ln_s "$(readlink -e "$1")" "$2"
else
cp_a "$1" "$2"
fi
}
have_cmd() { command -v "$1" >/dev/null 2>&1 || return ; }
strip_suffix() { printf '%s' "${1%"$2"}" | tr -s '/' ; }
user_install() {
if [ "${IEP_ROOT}" = 1 ] ; then
install -o "${NGX_USER}" -g "${NGX_GROUP}" "$@"
else
install "$@"
fi
}
is_builtin_module() {
[ -n "${1:-}" ] || return 1
[ -n "${2:-}" ] || return 1
[ -f "/etc/angie.dist/builtin.$1" ] || return 1
[ -s "/etc/angie.dist/builtin.$1" ] || return 1
grep -Fxq -e "$2" "/etc/angie.dist/builtin.$1" || return 1
}
append_list() {
if [ -n "$2" ] ; then
printf '%s' "${1:-}${1:+ }$2"
else
printf '%s' "$1"
fi
}
prepend_list() {
if [ -n "$2" ] ; then
printf '%s' "$2${1:+ }${1:-}"
else
printf '%s' "$1"
fi
}
list_have_item() {
[ -n "$1" ] || return 1
[ -n "$2" ] || return 1
case " $1 " in
*" $2 "* ) return 0 ;;
esac
return 1
}
normalize_list() {
[ -n "$1" ] || return 0
printf '%s' "$1" \
| sed -zE 's/[[:space:]]+/ /g;s/^ //;s/ $//'
}
sort_dedup_list() {
[ -n "$1" ] || return 0
printf '%s' "$1" \
| tr -s '[:space:]' '\n' | sort -uV \
| sed -zE 's/[[:space:]]+/ /g;s/^ //;s/ $//'
}
float_div() {
mawk -v "a=$1" -v "b=$2" 'BEGIN{print a/b;exit;}' </dev/null
}
find_fast() {
find "$@" -printf . -quit | grep -Fq .
}
randN() {
od -v -A n -t x1 -N "$1" < /dev/urandom | tr -d '[:space:]'
}
re_ipv4_oct='[0-9]|[1-9][0-9]|[1-9][0-9][0-9]|2[0-4][0-9]|25[0-5]'
re_ipv4_addr="^${re_ipv4_oct}\.${re_ipv4_oct}\.${re_ipv4_oct}\.${re_ipv4_oct}\$"
is_ipv4_address() {
[ -n "$1" ] || return 1
printf '%s' "$1" | grep -zEq "${re_ipv4_addr}" || return 1
}