Files
shell_sequencer/seqs/pyload-ng.sh

111 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
readonly toolName=pyload
readonly toolDeps=(python3 python3-pip python3-pil python3-openssl libcurl4-openssl-dev libssl-dev p7zip ffmpeg tesseract-ocr)
sq_aptOpt=
sq_config=0
seq_config() {
checkVpn
if initSeqConfig "${seq_configName:?}" "${seq_configTemplate:?}" ; then
sq_config=1
else
# End if no configuration file exists
dry || return 1
fi
## Apt cmdline option to suppress user interaction
interactive || sq_aptOpt="-y"
## Disable error checks if external scripts are used
## e.g. error on unbound variables
#disableErrorCheck
## Return of non zero value will abort the sequence
return 0
}
step_1_info() { echo "Show status"; }
step_1_alias() { echo "status"; }
step_1() {
local version=$(${sc_pyloadDir}/bin/pip list | grep pyload)
info "Status of ${toolName}-ng ${version##p* }"
exe systemctl -n0 status ${toolName}
}
step_10_info() {
echo "Install apt dependencies:";
echoinfo "${toolDeps[@]}";
}
#step_10_options() { echo "[OPTIONS]"; }
step_10_alias() { echo "install"; }
step_10() {
exe apt install "${toolDeps[@]}" ${sq_aptOpt}
}
step_11_info() {
echo "Create virtual python environment.";
}
step_11() {
if [ ! -e "$sc_pyloadDir/bin" ]; then
exe python3 -m venv ${sc_pyloadDir}
endReturn "Creating virtual environment failed"
else
warning "Virtual env. ${sc_pyloadDir} already exists"
fi
exe ${sc_pyloadDir}/bin/pip install --pre pyload-ng[all]
}
step_12_info() { echo "Create system user ${sc_pyloadUser:-'pyload'}"; }
step_12() {
if ! id ${sc_pyloadUser} &>/dev/null; then
exe adduser --home "${sc_pyloadHome:?}" --disabled-password --disabled-login --gecos "" "${sc_pyloadUser:?}"
info "Granting write access to network folder"
exe usermod -aG debian-transmission pyload
else
warning "User ${sc_pyloadUser} already exists"
fi
}
step_13_info() { echo "Create systemd service: ${toolServiceLoc##*/}"; }
step_13() {
local lService=`eval "echo \"$toolService\""`
addConf -c "$lService" "$toolServiceLoc"
exe systemctl daemon-reload
exe systemctl disable "${toolServiceLoc##*/}"
}
toolServiceLoc="/etc/systemd/system/pyload.service"
toolService="[Unit]
Description=Python Downloader
After=network-online.target nss-lookup.target local-fs.target remote-fs.target
[Service]
User=pyload
ExecStart=\${sc_pyloadDir}/bin/pyload
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target"
step_20_info() { echo "Upgrade ${toolName}"; }
step_20_alias() { echo "upgrade"; }
step_20() {
exe service ${toolName} stop
exe ${sc_pyloadDir}/bin/pip install --upgrade pip
exe ${sc_pyloadDir}/bin/pip install --pre pyload-ng[all] -U
}
checkVpn() {
if ip -br a | grep tun >>/dev/null 2>&1 ; then
[ $? -eq 0 ] && warning "A VPN connection is possibly active. Consider deactivating it befor any apt operation."
fi
}
# shellcheck disable=SC2034 # Appears unused
readonly sqr_minVersion=16
# shellcheck disable=SC1091 # Don't follow this source
. /usr/local/bin/sequencer.sh