UX: Smart menu adapts based on installation status
Menu now automatically detects if PBSClientTool is installed as a system command and hides the install option when already installed. DETECTION: - Checks if /usr/local/bin/PBSClientTool exists at startup - Stores result in SCRIPT_INSTALLED variable (true/false) - No verbose messages - detection is silent MENU BEHAVIOR: When NOT installed: 1) List all backup targets 2) Add new backup target 3) Edit existing target 4) Delete target 5) Run backup now (select target) 6) Reinstall PBS client 7) Install as system command ← Shows option 8) Exit Select option [1-8] [8]: When INSTALLED: 1) List all backup targets 2) Add new backup target 3) Edit existing target 4) Delete target 5) Run backup now (select target) 6) Reinstall PBS client 7) Exit ← Option 7 is now Exit Select option [1-7] [7]: SMART CASE HANDLING: - Option 7 handler checks SCRIPT_INSTALLED status - If false: Runs install_script() - If true: Exits program - Option 8 handler checks SCRIPT_INSTALLED status - If false: Exits program - If true: Shows "Invalid option" error - After installing from menu, SCRIPT_INSTALLED updates to true - Menu immediately reflects change on next iteration BENEFITS: - Cleaner UX - no redundant options - Self-documenting - absence of option indicates already installed - Automatic adaptation - no manual refresh needed - Prevents confusion - users won't try to install twice - Professional behavior - menus adapt to system state EDGE CASE HANDLING: - If user installs from menu option 7, status updates immediately - Next menu loop shows 7 options instead of 8 - Install option doesn't reappear until uninstalled 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
8335eba18c
commit
15fda585d1
2 changed files with 43 additions and 6 deletions
|
|
@ -142,6 +142,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- Runs in subshell to avoid environment pollution
|
||||
|
||||
### Changed
|
||||
- **Smart menu adaptation based on installation status**
|
||||
- Script detects if already installed as system command at startup
|
||||
- Hides "Install as system command" menu option if already installed
|
||||
- Menu adjusts from 8 options to 7 options when installed
|
||||
- Exit option renumbers from 8 to 7 automatically
|
||||
- Prompt range adjusts: [1-8] when not installed, [1-7] when installed
|
||||
- Installation status tracked in SCRIPT_INSTALLED variable
|
||||
- After installing from menu, option disappears immediately (updates status)
|
||||
- Cleaner UX - no redundant install option when already installed
|
||||
- **Documentation reorganization**
|
||||
- README.md simplified from 750 lines to 243 lines
|
||||
- Removed redundant step-by-step walkthrough sections
|
||||
|
|
|
|||
|
|
@ -2138,6 +2138,12 @@ main() {
|
|||
# Migrate legacy configuration if needed
|
||||
migrate_legacy_config
|
||||
|
||||
# Check if script is installed as system command
|
||||
SCRIPT_INSTALLED=false
|
||||
if [ -f "$INSTALL_PATH" ]; then
|
||||
SCRIPT_INSTALLED=true
|
||||
fi
|
||||
|
||||
# Check if PBS client is already installed
|
||||
if command -v proxmox-backup-client &> /dev/null; then
|
||||
warn "Proxmox Backup Client is already installed"
|
||||
|
|
@ -2161,9 +2167,16 @@ main() {
|
|||
echo " 4) Delete target"
|
||||
echo " 5) Run backup now (select target)"
|
||||
echo " 6) Reinstall PBS client"
|
||||
echo " 7) Install as system command"
|
||||
echo " 8) Exit"
|
||||
ACTION=$(prompt "Select option [1-8]" "8")
|
||||
|
||||
# Only show install option if not already installed
|
||||
if [ "$SCRIPT_INSTALLED" = false ]; then
|
||||
echo " 7) Install as system command"
|
||||
echo " 8) Exit"
|
||||
ACTION=$(prompt "Select option [1-8]" "8")
|
||||
else
|
||||
echo " 7) Exit"
|
||||
ACTION=$(prompt "Select option [1-7]" "7")
|
||||
fi
|
||||
|
||||
case "$ACTION" in
|
||||
1)
|
||||
|
|
@ -2241,11 +2254,26 @@ main() {
|
|||
log "PBS client reinstalled successfully"
|
||||
;;
|
||||
7)
|
||||
install_script
|
||||
# Option 7 is either "Install" or "Exit" depending on install status
|
||||
if [ "$SCRIPT_INSTALLED" = false ]; then
|
||||
install_script
|
||||
# Update status if installation succeeded
|
||||
if [ -f "$INSTALL_PATH" ]; then
|
||||
SCRIPT_INSTALLED=true
|
||||
fi
|
||||
else
|
||||
info "Exiting"
|
||||
exit 0
|
||||
fi
|
||||
;;
|
||||
8)
|
||||
info "Exiting"
|
||||
exit 0
|
||||
# Option 8 only exists when not installed (it's Exit)
|
||||
if [ "$SCRIPT_INSTALLED" = false ]; then
|
||||
info "Exiting"
|
||||
exit 0
|
||||
else
|
||||
error "Invalid option"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
error "Invalid option"
|
||||
|
|
|
|||
Loading…
Reference in a new issue