Compare commits

..

4 Commits

5 changed files with 53 additions and 6 deletions

View File

@ -1,5 +1,18 @@
# Changelog # Changelog
## 2025-03-25 - 2.4.4 - fix(install)
Improve interactive mode detection and non-interactive installation handling in install.sh
- Detect and warn when running without a controlling terminal
- Attempt to use /dev/tty for user input when possible
- Update prompts and error messages for auto-installation of dependencies
- Clarify installation instructions in readme for interactive and non-interactive modes
## 2025-03-25 - 2.4.3 - fix(readme)
Update Quick Install command syntax in readme for auto-yes installation
- Changed installation command to use: curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -c "bash -s -- -y"
## 2025-03-25 - 2.4.2 - fix(daemon) ## 2025-03-25 - 2.4.2 - fix(daemon)
Refactor shutdown initiation logic in daemon by moving the initiateShutdown and monitorDuringShutdown methods from the SNMP manager to the daemon, and update calls accordingly Refactor shutdown initiation logic in daemon by moving the initiateShutdown and monitorDuringShutdown methods from the SNMP manager to the daemon, and update calls accordingly

View File

@ -50,11 +50,35 @@ fi
# Detect if script is being piped or run directly # Detect if script is being piped or run directly
PIPED=0 PIPED=0
INTERACTIVE=1
if [ ! -t 0 ]; then if [ ! -t 0 ]; then
# Being piped, need to clone the repo # Being piped, need to clone the repo
PIPED=1 PIPED=1
fi fi
# Check if stdin is a terminal
if [ ! -t 0 ] || [ ! -t 1 ]; then
# Either stdin or stdout is not a terminal, check if -y was provided
if [ $AUTO_YES -ne 1 ]; then
echo "Warning: Running in non-interactive mode without -y flag."
echo "Will ask for confirmation via controlling terminal."
# Try to use a controlling terminal for user input
if [ -t 1 ]; then
# Stdout is a terminal, use it
exec < /dev/tty 2>/dev/null || INTERACTIVE=0
else
# Try to find controlling terminal
exec < /dev/tty 2>/dev/null || INTERACTIVE=0
fi
if [ $INTERACTIVE -eq 0 ]; then
echo "No controlling terminal available. To run non-interactively, use:"
echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y"
exit 1
fi
fi
fi
# Helper function to detect OS type # Helper function to detect OS type
detect_os() { detect_os() {
if [ -f /etc/os-release ]; then if [ -f /etc/os-release ]; then
@ -141,8 +165,10 @@ if [ $PIPED -eq 1 ]; then
if [ $AUTO_YES -eq 1 ]; then if [ $AUTO_YES -eq 1 ]; then
echo "Auto-installing git (-y flag provided)..." echo "Auto-installing git (-y flag provided)..."
install_git install_git
else elif [ $INTERACTIVE -eq 1 ]; then
read -p "Would you like to install git now? (y/N): " install_git_prompt # If interactive and no -y flag, ask the user
echo "Would you like to install git now? (y/N): "
read -r install_git_prompt
if [[ "$install_git_prompt" =~ ^[Yy]$ ]]; then if [[ "$install_git_prompt" =~ ^[Yy]$ ]]; then
install_git install_git
@ -152,6 +178,12 @@ if [ $PIPED -eq 1 ]; then
echo " sudo bash install.sh -y" echo " sudo bash install.sh -y"
exit 1 exit 1
fi fi
else
# Non-interactive mode without -y flag
echo "Error: Git is required but not installed."
echo "In non-interactive mode, use -y flag to auto-install dependencies:"
echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y"
exit 1
fi fi
fi fi

View File

@ -1,6 +1,6 @@
{ {
"name": "@serve.zone/nupst", "name": "@serve.zone/nupst",
"version": "2.4.2", "version": "2.4.4",
"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

@ -20,10 +20,12 @@ NUPST is a command-line tool that monitors SNMP-enabled UPS devices and initiate
```bash ```bash
# Install directly without cloning the repository (requires root privileges) # Install directly without cloning the repository (requires root privileges)
# This will interactively prompt for installing any dependencies
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash 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) # 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 # Use this for automated/non-interactive installations
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -c "bash -s -- -y"
``` ```
### 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.2', version: '2.4.4',
description: 'Node.js UPS Shutdown Tool for SNMP-enabled UPS devices' description: 'Node.js UPS Shutdown Tool for SNMP-enabled UPS devices'
} }