fix(install): Improve interactive mode detection and non-interactive installation handling in install.sh
This commit is contained in:
		| @@ -1,5 +1,13 @@ | ||||
| # 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 | ||||
|  | ||||
|   | ||||
							
								
								
									
										36
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								install.sh
									
									
									
									
									
								
							| @@ -50,11 +50,35 @@ fi | ||||
|  | ||||
| # Detect if script is being piped or run directly | ||||
| PIPED=0 | ||||
| INTERACTIVE=1 | ||||
| if [ ! -t 0 ]; then | ||||
|   # Being piped, need to clone the repo | ||||
|   PIPED=1 | ||||
| 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 | ||||
| detect_os() { | ||||
|   if [ -f /etc/os-release ]; then | ||||
| @@ -141,8 +165,10 @@ if [ $PIPED -eq 1 ]; then | ||||
|     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 | ||||
|     elif [ $INTERACTIVE -eq 1 ]; then | ||||
|       # 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 | ||||
|         install_git | ||||
| @@ -152,6 +178,12 @@ if [ $PIPED -eq 1 ]; then | ||||
|         echo "  sudo bash install.sh -y" | ||||
|         exit 1 | ||||
|       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 | ||||
|    | ||||
|   | ||||
| @@ -20,6 +20,11 @@ NUPST is a command-line tool that monitors SNMP-enabled UPS devices and initiate | ||||
|  | ||||
| ```bash | ||||
| # 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" | ||||
| ``` | ||||
|  | ||||
|   | ||||
| @@ -3,6 +3,6 @@ | ||||
|  */ | ||||
| export const commitinfo = { | ||||
|   name: '@serve.zone/nupst', | ||||
|   version: '2.4.3', | ||||
|   version: '2.4.4', | ||||
|   description: 'Node.js UPS Shutdown Tool for SNMP-enabled UPS devices' | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user