mirror of
https://github.com/ej52/proxmox-scripts.git
synced 2025-11-23 17:30:27 +01:00
refactor: Overhaul create and install scripts
This commit is contained in:
48
utils/alpine.sh
Normal file
48
utils/alpine.sh
Normal file
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
os_arch() {
|
||||
printf $(apk --print-arch)
|
||||
}
|
||||
|
||||
os_codename() {
|
||||
printf $(os_version)
|
||||
}
|
||||
|
||||
os_version() {
|
||||
VERSION_ID=$(awk -F'=' '/^VERSION_ID=/{ print $NF }' /etc/os-release)
|
||||
printf ${VERSION_ID%.*}
|
||||
}
|
||||
|
||||
pkg_update() {
|
||||
apk update -q >$__OUTPUT
|
||||
}
|
||||
|
||||
pkg_upgrade() {
|
||||
apk upgrade -q >$__OUTPUT
|
||||
}
|
||||
|
||||
pkg_add() {
|
||||
apk add -q -u $@ >$__OUTPUT
|
||||
}
|
||||
|
||||
pkg_del() {
|
||||
apk del -q --purge $@ >$__OUTPUT
|
||||
}
|
||||
|
||||
pkg_clean() {
|
||||
rm -rf /var/cache/apk/* >$__OUTPUT
|
||||
}
|
||||
|
||||
svc_add() {
|
||||
rc-update add $@ boot >$__OUTPUT
|
||||
rc-service $@ stop &>$__OUTPUT
|
||||
sleep 2
|
||||
rc-service $@ start >$__OUTPUT
|
||||
}
|
||||
|
||||
svc_start() {
|
||||
rc-service $@ start >$__OUTPUT
|
||||
}
|
||||
|
||||
svc_stop() {
|
||||
rc-service $@ stop >$__OUTPUT
|
||||
}
|
||||
215
utils/common.sh
Normal file
215
utils/common.sh
Normal file
@@ -0,0 +1,215 @@
|
||||
# Color variables
|
||||
CLR_RD="\033[0;31m"
|
||||
CLR_RDB="\033[1;31m"
|
||||
CLR_GN="\033[0;32m"
|
||||
CLR_GNB="\033[1;32m"
|
||||
CLR_YL="\033[0;33m"
|
||||
CLR_YLB="\033[1;33m"
|
||||
CLR_CY="\033[0;36m"
|
||||
CLR_CYB="\033[1;36m"
|
||||
CLR="\033[m"
|
||||
|
||||
# Helper variables
|
||||
__OUTPUT=/dev/null
|
||||
__SPIN_PID=0
|
||||
__LAST_LINE=0
|
||||
__STEP_NAME=""
|
||||
__STEP_BUSY=""
|
||||
__STEP_DONE=""
|
||||
|
||||
os_name() {
|
||||
printf $(uname)
|
||||
}
|
||||
|
||||
os_distro() {
|
||||
printf $(awk -F'=' '/^ID=/{ print $NF }' /etc/os-release)
|
||||
}
|
||||
|
||||
os_fetch() {
|
||||
wget -t 3 -T 30 -q $@
|
||||
}
|
||||
|
||||
os_ip() {
|
||||
printf $(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1)
|
||||
}
|
||||
|
||||
pms_bootstrap() {
|
||||
set -Eeuo pipefail
|
||||
|
||||
stty -echo
|
||||
printf "\033[?25l"
|
||||
|
||||
if [ "$EPS_CT_INSTALL" = false ]; then
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
pushd $TEMP_DIR >$__OUTPUT
|
||||
fi
|
||||
}
|
||||
|
||||
pms_header() {
|
||||
log "info" "${EPS_APP_NAME:-Unknown}\n"
|
||||
}
|
||||
|
||||
pms_check_os() {
|
||||
local _os=${1:-$EPS_OS_NAME}
|
||||
local _distro=${2:-$EPS_OS_DISTRO}
|
||||
local _supported=false
|
||||
|
||||
if [ "$_os" != "Linux" ]; then
|
||||
log "error" "OS not supported: ${CLR_CYB}$_os${CLR}" "" 1
|
||||
fi
|
||||
|
||||
for d in $EPS_SUPPORTED_DISTROS; do
|
||||
if [ "$d" = "$_distro" ]; then
|
||||
_supported=true
|
||||
break;
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$_supported" = false ]; then
|
||||
log "error" "OS distribution not supported: ${CLR_CYB}$_distro${CLR}\n\n${CLR_YL}Supported distributions:${CLR} ${CLR_YLB}$EPS_SUPPORTED_DISTROS${CLR}" "" 1
|
||||
fi
|
||||
}
|
||||
|
||||
pms_settraps() {
|
||||
trap '__trap_error ${BASH_LINENO:-"$LINENO"} ${FUNCNAME:-"$BASH_COMMAND"}' ERR
|
||||
trap __trap_interrupt SIGHUP SIGINT SIGQUIT
|
||||
trap __trap_exit EXIT
|
||||
}
|
||||
|
||||
pms_cleartraps() {
|
||||
trap - EXIT ERR SIGHUP SIGINT SIGQUIT
|
||||
}
|
||||
|
||||
log () {
|
||||
local type=${1:-"info"}
|
||||
local message="$2"
|
||||
local clear=${3:-}
|
||||
local exit_code=${4:-0}
|
||||
|
||||
case $type in
|
||||
info)
|
||||
printf "${clear}${CLR_CYB}ℹ ${CLR_CY}${message}${CLR}\n";;
|
||||
success)
|
||||
printf "${clear}${CLR_GNB}✔ ${CLR_GN}${message}${CLR}\n";;
|
||||
warn)
|
||||
printf "${clear}${CLR_YLB}! ${CLR_YL}${message}${CLR}\n";;
|
||||
error)
|
||||
printf "${clear}${CLR_RDB}✘ ${CLR_RD}${message}${CLR}\n";;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ $exit_code -gt 0 ]; then
|
||||
exit $exit_code
|
||||
fi
|
||||
}
|
||||
|
||||
step_start() {
|
||||
step_end
|
||||
|
||||
__STEP_NAME=${1:-}
|
||||
__STEP_BUSY=${2:-${__STEP_BUSY}}
|
||||
__STEP_DONE=${3:-${__STEP_DONE}}
|
||||
__LAST_LINE=$(__row)
|
||||
|
||||
log "info" "${__STEP_BUSY} ${__STEP_NAME}"
|
||||
__start_spinner &
|
||||
|
||||
__SPIN_PID=$!
|
||||
disown
|
||||
}
|
||||
|
||||
step_end() {
|
||||
__stop_spinner
|
||||
if [ -z "$__STEP_NAME" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
local message=${1:-}
|
||||
local exit_code=${2:-0}
|
||||
|
||||
if [ -z "$message" ]; then
|
||||
message="$__STEP_NAME $__STEP_DONE"
|
||||
if [ "$exit_code" -gt 0 ]; then
|
||||
message="$__STEP_NAME not $__STEP_DONE"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$exit_code" -gt 0 ]; then
|
||||
log "error" "$message ${CLR_RD}" $(__clr)
|
||||
exit $exit_code
|
||||
else
|
||||
log "success" "$message ${CLR_GN}" $(__clr)
|
||||
fi
|
||||
|
||||
__STEP_NAME=""
|
||||
__LAST_LINE=0
|
||||
}
|
||||
|
||||
__start_spinner() {
|
||||
local marks="⁘ ⁙"
|
||||
|
||||
while :; do
|
||||
for mark in $marks; do
|
||||
printf "$(__clr '1K')${CLR_CYB}$mark${CLR}\n"
|
||||
sleep 0.35
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
__stop_spinner() {
|
||||
if [ "$__SPIN_PID" -gt 0 ]; then
|
||||
kill $__SPIN_PID &>$__OUTPUT
|
||||
__SPIN_PID=0
|
||||
fi
|
||||
}
|
||||
|
||||
__row() {
|
||||
local COL
|
||||
local ROW
|
||||
IFS=';' read -sdR -p $'\E[6n' ROW COL
|
||||
printf "${ROW#*[}"
|
||||
}
|
||||
|
||||
__clr() {
|
||||
__LAST_LINE=${__LAST_LINE:-$(__row)}
|
||||
local end=${1:-"0J"}
|
||||
local row=${2:-$__LAST_LINE}
|
||||
local col=${3:-1}
|
||||
|
||||
printf "\r\033[${row};${col}H\033[${end}"
|
||||
}
|
||||
|
||||
__trap_exit() {
|
||||
trap - ERR
|
||||
|
||||
__stop_spinner &>$__OUTPUT
|
||||
|
||||
if [ "$EPS_CT_INSTALL" = false ]; then
|
||||
popd &>$__OUTPUT
|
||||
rm -rf $TEMP_DIR &>$__OUTPUT
|
||||
fi
|
||||
|
||||
printf "\033[?25h"
|
||||
stty sane
|
||||
}
|
||||
|
||||
__trap_interrupt() {
|
||||
local exit_code="$?"
|
||||
trap - ERR
|
||||
stty sane
|
||||
printf "\033[?25h"
|
||||
|
||||
[ -z "$__STEP_NAME" ] || log "warn" "$__STEP_NAME ${CLR_YL}not completely $__STEP_DONE${CLR}" $(__clr)
|
||||
printf "\n${CLR_YLB}[TERMINATED]${CLR} process terminated with exit code ${CLR_YLB}$exit_code${CLR}\n"
|
||||
}
|
||||
|
||||
__trap_error() {
|
||||
local exit_code="$?"
|
||||
local line_number="$1"
|
||||
local command="$2"
|
||||
local row=$(__row)
|
||||
|
||||
[ -z "$__STEP_NAME" ] || log "error" "$__STEP_NAME ${CLR_RD}not $__STEP_DONE" $(__clr 'K')
|
||||
printf "$(__clr '' $row)\n${CLR_RDB}[ERROR]${CLR} on line ${CLR_RDB}$line_number${CLR} with exit code ${CLR_RDB}$exit_code${CLR} while executing command ${CLR_YLB}$command${CLR}\n"
|
||||
}
|
||||
48
utils/debian.sh
Normal file
48
utils/debian.sh
Normal file
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
os_arch() {
|
||||
printf $(dpkg --print-architecture)
|
||||
}
|
||||
|
||||
os_codename() {
|
||||
printf $(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)
|
||||
}
|
||||
|
||||
os_version() {
|
||||
printf $(awk -F'=' '/^VERSION_ID=/{ print $NF }' /etc/os-release)
|
||||
}
|
||||
|
||||
pkg_update() {
|
||||
apt-get -y -qq update >$__OUTPUT
|
||||
}
|
||||
|
||||
pkg_upgrade() {
|
||||
apt-get -y -qq upgrade >$__OUTPUT
|
||||
}
|
||||
|
||||
pkg_add() {
|
||||
apt-get -y -qq --no-install-recommends install $@ >$__OUTPUT
|
||||
}
|
||||
|
||||
pkg_del() {
|
||||
apt-get -y -qq purge $@ >$__OUTPUT
|
||||
}
|
||||
|
||||
pkg_clean() {
|
||||
apt-get -y -qq autoremove >$__OUTPUT
|
||||
apt-get clean >$__OUTPUT
|
||||
}
|
||||
|
||||
svc_add() {
|
||||
systemctl daemon-reload >$__OUTPUT
|
||||
systemctl stop $@ &>$__OUTPUT
|
||||
sleep 2
|
||||
systemctl enable --now $@ >$__OUTPUT
|
||||
}
|
||||
|
||||
svc_start() {
|
||||
systemctl start $@ >$__OUTPUT
|
||||
}
|
||||
|
||||
svc_stop() {
|
||||
systemctl stop $@ >$__OUTPUT
|
||||
}
|
||||
Reference in New Issue
Block a user