From 9b9e009523b3f7f64fb7f4bf49f2b8e64c7c845a Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Tue, 25 Mar 2025 11:31:24 +0000 Subject: [PATCH] feat(installer): Add auto-yes flag to installer and update installation documentation --- changelog.md | 7 +++++ install.sh | 58 +++++++++++++++++++++++++++++++++++----- readme.md | 50 +++++++++++++++++++++++++++++++--- ts/00_commitinfo_data.ts | 2 +- 4 files changed, 107 insertions(+), 10 deletions(-) diff --git a/changelog.md b/changelog.md index c97190c..f2ca0d2 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 2025-03-25 - 2.4.0 - feat(installer) +Add auto-yes flag to installer and update installation documentation + +- Enhance install.sh to parse -y/--yes and -h/--help options, automating git installation when auto-yes is provided +- Improve user prompts for dependency installation and provide clearer instructions +- Update readme.md to document new installer options and enhanced file system and service changes details + ## 2025-03-25 - 2.3.0 - feat(installer/cli) Add OS detection and git auto-installation support to install.sh and improve service setup prompt in CLI diff --git a/install.sh b/install.sh index 00cf6be..9945a0d 100644 --- a/install.sh +++ b/install.sh @@ -2,7 +2,45 @@ # NUPST Installer Script # Downloads and installs NUPST globally on the system -# Can be used directly with curl: curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash +# Can be used directly with curl: +# Without auto-installing dependencies: +# curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash +# With auto-installing dependencies: +# curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y +# +# Options: +# -y, --yes Automatically answer yes to all prompts +# -h, --help Show this help message + +# Parse command line arguments +AUTO_YES=0 +SHOW_HELP=0 + +for arg in "$@"; do + case $arg in + -y|--yes) + AUTO_YES=1 + shift + ;; + -h|--help) + SHOW_HELP=1 + shift + ;; + *) + # Unknown option + ;; + esac +done + +if [ $SHOW_HELP -eq 1 ]; then + echo "NUPST Installer Script" + echo "Usage: $0 [options]" + echo "" + echo "Options:" + echo " -y, --yes Automatically answer yes to all prompts" + echo " -h, --help Show this help message" + exit 0 +fi # Check if running as root if [ "$EUID" -ne 0 ]; then @@ -99,13 +137,21 @@ if [ $PIPED -eq 1 ]; then # Check if git is installed if ! command -v git &> /dev/null; then echo "Git is required but not installed." - read -p "Would you like to install git now? (Y/n): " install_git_prompt - if [[ "$install_git_prompt" =~ ^[Nn]$ ]]; then - echo "Git installation skipped. Please install git manually and run the installer again." - exit 1 - else + if [ $AUTO_YES -eq 1 ]; then + echo "Auto-installing git (-y flag provided)..." install_git + else + read -p "Would you like to install git now? (y/N): " install_git_prompt + + if [[ "$install_git_prompt" =~ ^[Yy]$ ]]; then + install_git + else + echo "Git installation skipped. Please install git manually and run the installer again." + echo "Alternatively, you can run the installer with -y flag to automatically install git:" + echo " sudo bash install.sh -y" + exit 1 + fi fi fi diff --git a/readme.md b/readme.md index cebb84d..1b25a10 100644 --- a/readme.md +++ b/readme.md @@ -21,6 +21,9 @@ NUPST is a command-line tool that monitors SNMP-enabled UPS devices and initiate ```bash # Install directly without cloning the repository (requires root privileges) curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash + +# Install with auto-yes for dependencies (will install git automatically if needed) +curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y ``` ### Direct from Git @@ -33,20 +36,58 @@ cd nupst # Option 1: Quick install (requires root privileges) sudo ./install.sh +# Option 1a: Quick install with auto-yes for dependencies +sudo ./install.sh -y + # Option 2: Manual setup ./setup.sh sudo ln -s $(pwd)/bin/nupst /usr/local/bin/nupst ``` +### Installation Options + +The installer script (`install.sh`) supports the following options: + +``` +-y, --yes Automatically answer yes to all prompts (like installing git) +-h, --help Show the help message +``` + ### From NPM ```bash npm install -g @serve.zone/nupst ``` +## System Changes + +When installed, NUPST makes the following changes to your system: + +### File System Changes + +| Path | Description | +|------|-------------| +| `/opt/nupst/` | Main installation directory containing the NUPST files | +| `/etc/nupst/config.json` | Configuration file | +| `/usr/local/bin/nupst` | Symlink to the NUPST executable | +| `/etc/systemd/system/nupst.service` | Systemd service file (when enabled) | + +### Service Changes + +- Creates and enables a systemd service called `nupst.service` (when enabled with `nupst enable`) +- The service runs with root permissions to allow system shutdown capabilities + +### Network Access + +- NUPST only communicates with your UPS device via SNMP (default port 161) +- Brief connections to npmjs.org to check for updates + ## Uninstallation ```bash +# Using the CLI tool: +sudo nupst uninstall + # If installed from git repository: cd /path/to/nupst sudo ./uninstall.sh @@ -57,9 +98,10 @@ npm uninstall -g @serve.zone/nupst The uninstaller will: - Stop and disable the systemd service (if installed) -- Remove the systemd service file -- Remove the symlink from /usr/local/bin -- Optionally remove configuration files from /etc/nupst +- Remove the systemd service file from `/etc/systemd/system/nupst.service` +- Remove the symlink from `/usr/local/bin/nupst` +- Optionally remove configuration files from `/etc/nupst/` +- Remove the repository directory from `/opt/nupst/` (when using `nupst uninstall`) ## Usage @@ -76,7 +118,9 @@ Usage: nupst status - Show status of the systemd service and UPS status nupst setup - Run the interactive setup to configure SNMP settings nupst test - Test the current configuration by connecting to the UPS + nupst config - Display the current configuration nupst update - Update NUPST from repository and refresh systemd service (requires root) + nupst uninstall - Completely uninstall NUPST from the system (requires root) nupst help - Show this help message Options: diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 8dca2b3..3411ce4 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@serve.zone/nupst', - version: '2.3.0', + version: '2.4.0', description: 'Node.js UPS Shutdown Tool for SNMP-enabled UPS devices' }