diff --git a/.gitignore b/.gitignore index 66dc3fe..6bd91c3 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,8 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json /.bunext /db/.backups /db/.exports +/db/wgui +/db/bmp .bun-sqlite /assets diff --git a/db/bmp b/db/bmp deleted file mode 100644 index f27ec63..0000000 Binary files a/db/bmp and /dev/null differ diff --git a/db/wgui b/db/wgui deleted file mode 100644 index 733412a..0000000 Binary files a/db/wgui and /dev/null differ diff --git a/src/scripts/install-wg-ui.sh b/src/scripts/install-wg-ui.sh index d015c5a..8c1e709 100755 --- a/src/scripts/install-wg-ui.sh +++ b/src/scripts/install-wg-ui.sh @@ -16,6 +16,7 @@ REPO_URL="${REPO_URL:-}" BRANCH="${BRANCH:-main}" BUN_INSTALL_DIR="${BUN_INSTALL_DIR:-/opt/bun}" BUN_BIN="/usr/local/bin/bun" +UPDATE=false log() { echo "==> $*"; } fail() { echo "error: $*" >&2; exit 1; } @@ -99,9 +100,17 @@ setup_service_user() { clone_or_update() { mkdir -p "$(dirname "$INSTALL_DIR")" if [ -d "$INSTALL_DIR/.git" ]; then + UPDATE=true log "updating existing install at $INSTALL_DIR ..." git -C "$INSTALL_DIR" fetch --depth 1 origin "$BRANCH" + local db_backup="$INSTALL_DIR/db/.wgui-pre-update.db" + if [ -f "$INSTALL_DIR/db/wgui" ]; then + cp -a "$INSTALL_DIR/db/wgui" "$db_backup" + fi git -C "$INSTALL_DIR" reset --hard "origin/$BRANCH" + if [ -f "$db_backup" ]; then + mv -f "$db_backup" "$INSTALL_DIR/db/wgui" + fi else log "cloning wg-ui ($REPO_URL, branch $BRANCH) ..." git clone --depth 1 --branch "$BRANCH" "$REPO_URL" "$INSTALL_DIR" @@ -180,6 +189,10 @@ EOF systemctl daemon-reload log "enabling and starting $SERVICE_NAME ..." systemctl enable --now "$SERVICE_NAME.service" + if [ "$UPDATE" = true ]; then + log "restarting $SERVICE_NAME to load updated code ..." + systemctl restart "$SERVICE_NAME.service" + fi } install_openrc_unit() { @@ -209,7 +222,11 @@ EOF chmod +x "$init_script" log "adding $SERVICE_NAME to default runlevel and starting ..." rc-update add "$SERVICE_NAME" default - rc-service "$SERVICE_NAME" start + if [ "$UPDATE" = true ]; then + rc-service "$SERVICE_NAME" restart + else + rc-service "$SERVICE_NAME" start + fi } grab_port() {