From 7442fab18d959016d6db4631a7eb37ae9e85f9f3 Mon Sep 17 00:00:00 2001 From: shuki Date: Wed, 4 Mar 2026 02:40:44 +0200 Subject: [PATCH] Update install.sh to support single-line remote install Clones from git repo when run outside a local checkout, with automatic temp directory cleanup. Co-Authored-By: Claude Opus 4.6 --- scripts/install.sh | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index 9b0b554..4097a73 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,19 +1,35 @@ #!/usr/bin/env bash -# gniza install script -# Installs to /usr/local/gniza and creates symlink in /usr/local/bin +# gniza installer — single-line install: +# bash <(curl -sSL http://192.168.100.100:3000/shukivaknin/gniza/raw/branch/main/scripts/install.sh) +# +# Or from a local clone: +# bash scripts/install.sh set -euo pipefail INSTALL_DIR="/usr/local/gniza" BIN_LINK="/usr/local/bin/gniza" +REPO_URL="ssh://git@192.168.100.100:2222/shukivaknin/gniza.git" +TMPDIR_CLONE="" if [[ $EUID -ne 0 ]]; then echo "Error: install.sh must be run as root" >&2 exit 1 fi -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -SOURCE_DIR="$(dirname "$SCRIPT_DIR")" +# Determine source directory — local clone or fresh git clone +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}" 2>/dev/null)" 2>/dev/null && pwd)" || true +if [[ -n "$SCRIPT_DIR" && -f "$SCRIPT_DIR/../bin/gniza" ]]; then + SOURCE_DIR="$(dirname "$SCRIPT_DIR")" +else + echo "Cloning gniza..." + TMPDIR_CLONE="$(mktemp -d)" + git clone --depth 1 "$REPO_URL" "$TMPDIR_CLONE" 2>&1 + SOURCE_DIR="$TMPDIR_CLONE" +fi + +cleanup() { [[ -n "$TMPDIR_CLONE" ]] && rm -rf "$TMPDIR_CLONE"; } +trap cleanup EXIT echo "Installing gniza to $INSTALL_DIR..." @@ -35,9 +51,7 @@ ln -sf "$INSTALL_DIR/bin/gniza" "$BIN_LINK" mkdir -p "$INSTALL_DIR/workdir" # Create config directory structure -mkdir -p /etc/gniza -mkdir -p /etc/gniza/remotes.d -mkdir -p /etc/gniza/schedules.d +mkdir -p /etc/gniza/remotes.d /etc/gniza/schedules.d # Copy example configs if no config exists if [[ ! -f /etc/gniza/gniza.conf ]]; then @@ -56,9 +70,19 @@ echo "gniza installed successfully!" WHM_CGI_DIR="/usr/local/cpanel/whostmgr/docroot/cgi" if [[ -d "$WHM_CGI_DIR" ]]; then echo "Installing WHM plugin..." + # Remove old assets cruft (node_modules, src) if upgrading + rm -rf "$WHM_CGI_DIR/gniza-whm/assets/node_modules" \ + "$WHM_CGI_DIR/gniza-whm/assets/src" \ + "$WHM_CGI_DIR/gniza-whm/assets/package.json" \ + "$WHM_CGI_DIR/gniza-whm/assets/package-lock.json" 2>/dev/null || true cp -r "$SOURCE_DIR/whm/gniza-whm" "$WHM_CGI_DIR/" cp "$SOURCE_DIR/whm/gniza-whm.conf" "$WHM_CGI_DIR/gniza-whm/" chmod +x "$WHM_CGI_DIR/gniza-whm/"*.cgi + # Remove build artifacts that shouldn't be on the server + rm -rf "$WHM_CGI_DIR/gniza-whm/assets/node_modules" \ + "$WHM_CGI_DIR/gniza-whm/assets/src" \ + "$WHM_CGI_DIR/gniza-whm/assets/package.json" \ + "$WHM_CGI_DIR/gniza-whm/assets/package-lock.json" 2>/dev/null || true /usr/local/cpanel/bin/register_appconfig "$WHM_CGI_DIR/gniza-whm/gniza-whm.conf" echo "WHM plugin installed — access via WHM > Plugins > gniza Backup Manager" else