50 lines
1.5 KiB
Bash
Executable File
50 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SYSTEMD_DIR="$PROJECT_DIR/systemd"
|
|
RENDER_DIR="$SYSTEMD_DIR/rendered"
|
|
|
|
USER_NAME="${BILIUP_NEXT_USER:-$(id -un)}"
|
|
GROUP_NAME="${BILIUP_NEXT_GROUP:-$(id -gn)}"
|
|
DEFAULT_PYTHON="$PROJECT_DIR/../.venv/bin/python"
|
|
if [[ -x "$DEFAULT_PYTHON" ]]; then
|
|
PYTHON_BIN="${BILIUP_NEXT_PYTHON:-$(readlink -f "$DEFAULT_PYTHON")}"
|
|
else
|
|
PYTHON_BIN="${BILIUP_NEXT_PYTHON:-$(command -v python3)}"
|
|
fi
|
|
|
|
render_unit() {
|
|
local template="$1"
|
|
local output="$2"
|
|
sed \
|
|
-e "s|__PROJECT_DIR__|$PROJECT_DIR|g" \
|
|
-e "s|__USER__|$USER_NAME|g" \
|
|
-e "s|__GROUP__|$GROUP_NAME|g" \
|
|
-e "s|__PYTHON_BIN__|$PYTHON_BIN|g" \
|
|
"$template" > "$output"
|
|
}
|
|
|
|
mkdir -p "$RENDER_DIR"
|
|
|
|
render_unit \
|
|
"$SYSTEMD_DIR/biliup-next-worker.service.template" \
|
|
"$RENDER_DIR/biliup-next-worker.service"
|
|
render_unit \
|
|
"$SYSTEMD_DIR/biliup-next-api.service.template" \
|
|
"$RENDER_DIR/biliup-next-api.service"
|
|
|
|
sudo install -m 0644 "$RENDER_DIR/biliup-next-worker.service" /etc/systemd/system/biliup-next-worker.service
|
|
sudo install -m 0644 "$RENDER_DIR/biliup-next-api.service" /etc/systemd/system/biliup-next-api.service
|
|
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable --now biliup-next-worker.service
|
|
sudo systemctl enable --now biliup-next-api.service
|
|
|
|
echo "Installed:"
|
|
echo " /etc/systemd/system/biliup-next-worker.service"
|
|
echo " /etc/systemd/system/biliup-next-api.service"
|
|
echo "User: $USER_NAME"
|
|
echo "Group: $GROUP_NAME"
|
|
echo "Python: $PYTHON_BIN"
|