refactor(install): remove interactive mode, simplify installation
Interactive mode was causing issues with automated testing and the nupst update command (failed with /dev/tty errors). Since users running curl|bash have already decided to install, prompts add no value and only create friction. Changes: - Removed -y/--yes flag (no longer needed) - Removed all interactive confirmation prompts - Removed terminal detection logic (/dev/tty handling) - Updated README to remove all -y flag references - Simplified installation examples Benefits: - Works in all environments (piped, non-interactive, containers) - Fixes nupst update command - Cleaner user experience - Matches standard install script patterns (homebrew, rustup, etc.)
This commit is contained in:
92
install.sh
92
install.sh
@@ -10,15 +10,7 @@
|
|||||||
# With version specification:
|
# With version specification:
|
||||||
# curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- --version v4.0.0
|
# curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- --version v4.0.0
|
||||||
#
|
#
|
||||||
# Non-interactive mode (auto-confirm):
|
|
||||||
# curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y
|
|
||||||
#
|
|
||||||
# Downloaded script:
|
|
||||||
# curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh -o nupst-install.sh
|
|
||||||
# sudo bash nupst-install.sh
|
|
||||||
#
|
|
||||||
# Options:
|
# Options:
|
||||||
# -y, --yes Automatically answer yes to all prompts
|
|
||||||
# -h, --help Show this help message
|
# -h, --help Show this help message
|
||||||
# --version VERSION Install specific version (e.g., v4.0.0)
|
# --version VERSION Install specific version (e.g., v4.0.0)
|
||||||
# --install-dir DIR Installation directory (default: /opt/nupst)
|
# --install-dir DIR Installation directory (default: /opt/nupst)
|
||||||
@@ -26,7 +18,6 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Default values
|
# Default values
|
||||||
AUTO_YES=0
|
|
||||||
SHOW_HELP=0
|
SHOW_HELP=0
|
||||||
SPECIFIED_VERSION=""
|
SPECIFIED_VERSION=""
|
||||||
INSTALL_DIR="/opt/nupst"
|
INSTALL_DIR="/opt/nupst"
|
||||||
@@ -36,10 +27,6 @@ GITEA_REPO="serve.zone/nupst"
|
|||||||
# Parse command line arguments
|
# Parse command line arguments
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
-y|--yes)
|
|
||||||
AUTO_YES=1
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-h|--help)
|
-h|--help)
|
||||||
SHOW_HELP=1
|
SHOW_HELP=1
|
||||||
shift
|
shift
|
||||||
@@ -67,7 +54,6 @@ if [ $SHOW_HELP -eq 1 ]; then
|
|||||||
echo "Usage: $0 [options]"
|
echo "Usage: $0 [options]"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " -y, --yes Automatically answer yes to all prompts"
|
|
||||||
echo " -h, --help Show this help message"
|
echo " -h, --help Show this help message"
|
||||||
echo " --version VERSION Install specific version (e.g., v4.0.0)"
|
echo " --version VERSION Install specific version (e.g., v4.0.0)"
|
||||||
echo " --install-dir DIR Installation directory (default: /opt/nupst)"
|
echo " --install-dir DIR Installation directory (default: /opt/nupst)"
|
||||||
@@ -78,9 +64,6 @@ if [ $SHOW_HELP -eq 1 ]; then
|
|||||||
echo ""
|
echo ""
|
||||||
echo " # Install specific version"
|
echo " # Install specific version"
|
||||||
echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- --version v4.0.0"
|
echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- --version v4.0.0"
|
||||||
echo ""
|
|
||||||
echo " # Non-interactive installation"
|
|
||||||
echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y"
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -90,36 +73,6 @@ if [ "$EUID" -ne 0 ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Detect if script is being piped or run directly
|
|
||||||
INTERACTIVE=1
|
|
||||||
if [ ! -t 0 ] || [ ! -t 1 ]; then
|
|
||||||
# Either stdin or stdout is not a terminal
|
|
||||||
if [ $AUTO_YES -ne 1 ]; then
|
|
||||||
echo "Script detected it's running in a non-interactive environment without -y flag."
|
|
||||||
echo "Attempting to find a controlling terminal for interactive prompts..."
|
|
||||||
# Try to use a controlling terminal for user input
|
|
||||||
if exec < /dev/tty 2>/dev/null && [ -t 0 ]; then
|
|
||||||
INTERACTIVE=1
|
|
||||||
else
|
|
||||||
INTERACTIVE=0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $INTERACTIVE -eq 0 ]; then
|
|
||||||
echo "ERROR: No controlling terminal available for interactive prompts."
|
|
||||||
echo ""
|
|
||||||
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 auto-confirm:"
|
|
||||||
echo " curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo "Interactive terminal found, continuing with prompts..."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Helper function to detect OS and architecture
|
# Helper function to detect OS and architecture
|
||||||
detect_platform() {
|
detect_platform() {
|
||||||
local os=$(uname -s)
|
local os=$(uname -s)
|
||||||
@@ -229,22 +182,6 @@ if [ -d "$INSTALL_DIR" ]; then
|
|||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $AUTO_YES -eq 0 ] && [ $INTERACTIVE -eq 1 ]; then
|
|
||||||
if [ $OLD_NODE_INSTALL -eq 1 ]; then
|
|
||||||
echo "This will replace your Node.js installation with a pre-compiled binary."
|
|
||||||
echo "Your configuration in /etc/nupst/config.json will be preserved."
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
echo "Installation directory already exists: $INSTALL_DIR"
|
|
||||||
echo "Do you want to update/reinstall? (Y/n): "
|
|
||||||
read -r update_confirm
|
|
||||||
|
|
||||||
if [[ "$update_confirm" =~ ^[Nn]$ ]]; then
|
|
||||||
echo "Installation cancelled."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Updating existing installation at $INSTALL_DIR..."
|
echo "Updating existing installation at $INSTALL_DIR..."
|
||||||
|
|
||||||
# Check if service exists (enabled or running) and stop it if active
|
# Check if service exists (enabled or running) and stop it if active
|
||||||
@@ -273,17 +210,6 @@ if [ -d "$INSTALL_DIR" ]; then
|
|||||||
echo "Old installation files removed."
|
echo "Old installation files removed."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ $AUTO_YES -eq 0 ] && [ $INTERACTIVE -eq 1 ]; then
|
|
||||||
echo "NUPST will be installed to: $INSTALL_DIR"
|
|
||||||
echo "Continue? (Y/n): "
|
|
||||||
read -r install_confirm
|
|
||||||
|
|
||||||
if [[ "$install_confirm" =~ ^[Nn]$ ]]; then
|
|
||||||
echo "Installation cancelled."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Creating installation directory: $INSTALL_DIR"
|
echo "Creating installation directory: $INSTALL_DIR"
|
||||||
mkdir -p "$INSTALL_DIR"
|
mkdir -p "$INSTALL_DIR"
|
||||||
fi
|
fi
|
||||||
@@ -329,22 +255,8 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Create symlink for global access
|
# Create symlink for global access
|
||||||
if [ $AUTO_YES -eq 0 ] && [ $INTERACTIVE -eq 1 ]; then
|
ln -sf "$BINARY_PATH" "$BIN_DIR/nupst"
|
||||||
echo "Create symlink in $BIN_DIR for global access? (Y/n): "
|
echo "Symlink created: $BIN_DIR/nupst -> $BINARY_PATH"
|
||||||
read -r symlink_confirm
|
|
||||||
|
|
||||||
if [[ ! "$symlink_confirm" =~ ^[Nn]$ ]]; then
|
|
||||||
ln -sf "$BINARY_PATH" "$BIN_DIR/nupst"
|
|
||||||
echo "Symlink created: $BIN_DIR/nupst -> $BINARY_PATH"
|
|
||||||
else
|
|
||||||
echo "Symlink creation skipped."
|
|
||||||
echo "To use NUPST, run: $BINARY_PATH"
|
|
||||||
echo "Or manually create symlink: sudo ln -sf $BINARY_PATH $BIN_DIR/nupst"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
ln -sf "$BINARY_PATH" "$BIN_DIR/nupst"
|
|
||||||
echo "Symlink created: $BIN_DIR/nupst -> $BINARY_PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
16
readme.md
16
readme.md
@@ -29,15 +29,8 @@ dependencies.
|
|||||||
The easiest way to install NUPST is using the automated installer:
|
The easiest way to install NUPST is using the automated installer:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Download and run installer (most reliable)
|
# One-line installation
|
||||||
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh -o nupst-install.sh
|
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash
|
||||||
sudo bash nupst-install.sh
|
|
||||||
rm nupst-install.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# One-line installation (non-interactive with auto-confirm)
|
|
||||||
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The installer will:
|
The installer will:
|
||||||
@@ -76,7 +69,6 @@ sudo mv nupst /usr/local/bin/nupst
|
|||||||
The installer script (`install.sh`) supports the following options:
|
The installer script (`install.sh`) supports the following options:
|
||||||
|
|
||||||
```
|
```
|
||||||
-y, --yes Automatically answer yes to all prompts
|
|
||||||
-h, --help Show help message
|
-h, --help Show help message
|
||||||
--version VERSION Install specific version (e.g., --version v4.0.0)
|
--version VERSION Install specific version (e.g., --version v4.0.0)
|
||||||
--install-dir DIR Custom installation directory (default: /opt/nupst)
|
--install-dir DIR Custom installation directory (default: /opt/nupst)
|
||||||
@@ -373,7 +365,7 @@ sudo nupst service disable
|
|||||||
Re-run the installer to update to the latest version:
|
Re-run the installer to update to the latest version:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y
|
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash
|
||||||
```
|
```
|
||||||
|
|
||||||
The installer will:
|
The installer will:
|
||||||
@@ -461,7 +453,7 @@ The installer script automatically handles the entire migration while preserving
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Run the installer (handles stop/update/restart automatically)
|
# Run the installer (handles stop/update/restart automatically)
|
||||||
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y
|
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash
|
||||||
|
|
||||||
# Verify
|
# Verify
|
||||||
nupst service status
|
nupst service status
|
||||||
|
Reference in New Issue
Block a user