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.)
The v3→v4 migration was only renaming upsList to upsDevices without
transforming the device structure. V3 had a flat structure with SNMP
fields directly on the device object, while v4 expects a nested 'snmp'
object.
This commit fixes the migration to:
- Move host, port, community, version, etc. into nested snmp object
- Convert version from string to number
- Add default timeout (5000ms)
- Create thresholds object with defaults
- Preserve all SNMPv1, v2c, and v3 authentication fields
Also includes install.sh fix for better non-interactive handling.
Previously only checked 'is-active' which missed failed/stopped services.
Now checks 'is-enabled' OR 'is-active' to ensure service file gets updated
during v3→v4 migration regardless of service state.
Critical fixes for v3→v4 migration:
1. install.sh: Auto-update systemd service file during migration
- Calls 'nupst service enable' before restarting service
- Only when migrating from v3 (OLD_NODE_INSTALL=1)
- Ensures service file has correct v4 paths
2. ts/systemd.ts: Fix hardcoded v3 paths in service template
- ExecStart: /opt/nupst/bin/nupst daemon-start (v3, broken)
→ /usr/local/bin/nupst service start-daemon (v4, correct)
- Description: Updated to 'Deno-powered UPS Monitoring Tool'
- Added RestartSec=10 (prevent rapid restart loops)
- Removed NODE_ENV=production (not needed for Deno)
- WorkingDirectory: /tmp → /opt/nupst
Without these fixes:
- Service fails to start after migration
- Service file points to non-existent /opt/nupst/bin/nupst
- Users must manually run 'nupst service enable'
Discovered via Docker migration testing in test/manualdocker/
Enhanced install.sh to properly handle updates and migrations:
**Update Detection & Service Management:**
- Detect old Node.js-based installations (v3.x) via package.json/node_modules
- Stop running service before updating binary
- Restart service after successful update if it was running
- Preserve /etc/nupst/config.json during updates
**Migration from v3.x to v4.0:**
- Clean up old Node.js installation files:
- node_modules/, vendor/, dist_ts/ directories
- package.json, package-lock.json, pnpm-lock.yaml
- tsconfig.json, setup.sh, bin/ directory
- Inform user about migration with helpful feedback
- Link to migration guide documentation
**User Experience Improvements:**
- Show different messages for new installs vs updates
- Inform about v3.x → v4.0 migration when detected
- Display migration guide link for old installations
- Show service restart status
- Provide context-aware next steps based on config presence
**Safety Features:**
- Ask for confirmation before replacing existing installation (interactive mode)
- Preserve user configuration in /etc/nupst/
- Handle service state properly (stop → update → restart)
- Graceful cleanup with error suppression (|| true)
This ensures seamless updates from any version (including v3.x Node.js installs)
to v4.0+ Deno-based binaries without manual intervention or data loss.