Compare commits

..

8 Commits

5 changed files with 108 additions and 36 deletions

View File

@ -1,5 +1,29 @@
# Changelog # Changelog
## 2025-03-25 - 2.4.8 - fix(installer)
Improve Git dependency handling and repository cloning in install.sh
- Add explicit check for git installation and prompt the user interactively if git is missing.
- Auto-install git when '-y' flag is provided in non-interactive mode.
- Ensure proper cloning of the repository when running the installer outside the repo.
## 2025-03-25 - 2.4.7 - fix(readme)
Update installation instructions to combine download and execution into a single command for clarity
- Method 1 now uses a unified one-line command to download and run the install script
## 2025-03-25 - 2.4.6 - fix(installer)
Improve installation instructions for interactive and non-interactive setups
- Changed install.sh to require explicit download of the install script and updated error messages for non-interactive modes
- Updated readme.md to include three distinct installation methods with clear command examples
## 2025-03-25 - 2.4.5 - fix(install)
Improve interactive terminal detection and update installation instructions
- Enhanced install.sh to better detect non-interactive environments and provide clearer guidance for both interactive and non-interactive installations
- Updated README.md quick install instructions to recommend process substitution and clarify auto-yes usage
## 2025-03-25 - 2.4.4 - fix(install) ## 2025-03-25 - 2.4.4 - fix(install)
Improve interactive mode detection and non-interactive installation handling in install.sh Improve interactive mode detection and non-interactive installation handling in install.sh

View File

@ -60,8 +60,8 @@ fi
if [ ! -t 0 ] || [ ! -t 1 ]; then if [ ! -t 0 ] || [ ! -t 1 ]; then
# Either stdin or stdout is not a terminal, check if -y was provided # Either stdin or stdout is not a terminal, check if -y was provided
if [ $AUTO_YES -ne 1 ]; then if [ $AUTO_YES -ne 1 ]; then
echo "Warning: Running in non-interactive mode without -y flag." echo "Script detected it's running in a non-interactive environment without -y flag."
echo "Will ask for confirmation via controlling terminal." echo "Attempting to find a controlling terminal for interactive prompts..."
# Try to use a controlling terminal for user input # Try to use a controlling terminal for user input
if [ -t 1 ]; then if [ -t 1 ]; then
# Stdout is a terminal, use it # Stdout is a terminal, use it
@ -72,9 +72,16 @@ if [ ! -t 0 ] || [ ! -t 1 ]; then
fi fi
if [ $INTERACTIVE -eq 0 ]; then if [ $INTERACTIVE -eq 0 ]; then
echo "No controlling terminal available. To run non-interactively, use:" echo "ERROR: No controlling terminal available for interactive prompts."
echo "For interactive installation (RECOMMENDED):"
echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh -o nupst-install.sh"
echo " sudo bash nupst-install.sh"
echo ""
echo "For non-interactive installation with automatic dependency installation:"
echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y" echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y"
exit 1 exit 1
else
echo "Interactive terminal found, continuing with prompts..."
fi fi
fi fi
fi fi
@ -155,10 +162,7 @@ install_git() {
INSTALL_DIR="/opt/nupst" INSTALL_DIR="/opt/nupst"
REPO_URL="https://code.foss.global/serve.zone/nupst.git" REPO_URL="https://code.foss.global/serve.zone/nupst.git"
if [ $PIPED -eq 1 ]; then # Check if git is installed - needed for both piped and direct execution
echo "Installing NUPST from remote repository..."
# Check if git is installed
if ! command -v git &> /dev/null; then if ! command -v git &> /dev/null; then
echo "Git is required but not installed." echo "Git is required but not installed."
@ -187,6 +191,9 @@ if [ $PIPED -eq 1 ]; then
fi fi
fi fi
if [ $PIPED -eq 1 ]; then
echo "Installing NUPST from remote repository..."
# Check if installation directory exists # Check if installation directory exists
if [ -d "$INSTALL_DIR" ] && [ -d "$INSTALL_DIR/.git" ]; then if [ -d "$INSTALL_DIR" ] && [ -d "$INSTALL_DIR/.git" ]; then
echo "Existing installation found at $INSTALL_DIR. Updating..." echo "Existing installation found at $INSTALL_DIR. Updating..."
@ -228,12 +235,47 @@ if [ $PIPED -eq 1 ]; then
# Set script directory to the cloned repo # Set script directory to the cloned repo
SCRIPT_DIR="$INSTALL_DIR" SCRIPT_DIR="$INSTALL_DIR"
else else
# Running directly from within the repo # Running directly from within the repo or downloaded script
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# When running from a downloaded script in a different location
# we need to clone the repository first
if [ ! -f "$SCRIPT_DIR/setup.sh" ]; then
echo "Running installer from downloaded script outside repository."
echo "Will clone the repository to $INSTALL_DIR..."
# Create installation directory if needed
if [ -d "$INSTALL_DIR" ]; then
echo "Removing previous installation at $INSTALL_DIR..."
rm -rf "$INSTALL_DIR"
fi
mkdir -p "$INSTALL_DIR"
# Clone the repository
echo "Cloning NUPST repository to $INSTALL_DIR..."
git clone --depth 1 $REPO_URL "$INSTALL_DIR"
if [ $? -ne 0 ]; then
echo "Failed to clone repository. Please check your internet connection."
exit 1
fi
# Update script directory to use the cloned repo
SCRIPT_DIR="$INSTALL_DIR"
fi
fi fi
# Run setup script # Run setup script
echo "Running setup script..." echo "Running setup script..."
if [ ! -f "$SCRIPT_DIR/setup.sh" ]; then
echo "ERROR: Setup script not found at $SCRIPT_DIR/setup.sh"
echo "Current directory: $(pwd)"
echo "Script directory: $SCRIPT_DIR"
ls -la "$SCRIPT_DIR"
exit 1
fi
bash "$SCRIPT_DIR/setup.sh" bash "$SCRIPT_DIR/setup.sh"
# Install globally # Install globally

View File

@ -1,6 +1,6 @@
{ {
"name": "@serve.zone/nupst", "name": "@serve.zone/nupst",
"version": "2.4.4", "version": "2.4.8",
"description": "Node.js UPS Shutdown Tool for SNMP-enabled UPS devices", "description": "Node.js UPS Shutdown Tool for SNMP-enabled UPS devices",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {

View File

@ -19,13 +19,19 @@ NUPST is a command-line tool that monitors SNMP-enabled UPS devices and initiate
### Quick Install (One-line command) ### Quick Install (One-line command)
```bash ```bash
# Install directly without cloning the repository (requires root privileges) # Method 1: Download and run (most reliable across all environments)
# This will interactively prompt for installing any dependencies curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh -o nupst-install.sh && sudo bash nupst-install.sh && rm nupst-install.sh
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) ```bash
# Use this for automated/non-interactive installations # Method 2: Pipe with automatic yes for dependencies (non-interactive)
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -c "bash -s -- -y" curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y
```
```bash
# Method 3: Process substitution (only on systems that support /dev/fd/)
# Note: This may fail on some systems with "No such file or directory" errors
sudo bash <(curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh)
``` ```
### Direct from Git ### Direct from Git

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@serve.zone/nupst', name: '@serve.zone/nupst',
version: '2.4.4', version: '2.4.8',
description: 'Node.js UPS Shutdown Tool for SNMP-enabled UPS devices' description: 'Node.js UPS Shutdown Tool for SNMP-enabled UPS devices'
} }