fix(install): Improve interactive mode detection and non-interactive installation handling in install.sh
This commit is contained in:
parent
e68654a022
commit
55c040df82
@ -1,5 +1,13 @@
|
|||||||
# 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)
|
## 2025-03-25 - 2.4.3 - fix(readme)
|
||||||
Update Quick Install command syntax in readme for auto-yes installation
|
Update Quick Install command syntax in readme for auto-yes installation
|
||||||
|
|
||||||
|
36
install.sh
36
install.sh
@ -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
|
||||||
|
|
||||||
|
@ -20,6 +20,11 @@ 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
|
||||||
|
|
||||||
|
# Install with auto-yes for dependencies (will install git automatically if needed)
|
||||||
|
# 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"
|
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -c "bash -s -- -y"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/nupst',
|
name: '@serve.zone/nupst',
|
||||||
version: '2.4.3',
|
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'
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user