- Use modern signed-by method for PostgreSQL GPG keys - Auto-detect latest Python 3 version from deadsnakes PPA - Add command tracing (set -x) to show all commands as they run - Display sudo commands upfront before execution - Add user confirmation prompts (y/N) before installation - Improve error handling with set -euo pipefail - Add proper cleanup and verification steps - Use pipx for VisiData installation - Better output formatting with clear section headers Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
82 lines
2.3 KiB
Bash
Executable File
82 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
echo "============================================"
|
|
echo "SDKMAN (Java Development) Installation Script"
|
|
echo "============================================"
|
|
echo ""
|
|
echo "This script will run the following commands with sudo:"
|
|
echo " - apt-get update"
|
|
echo " - apt-get install -y zip unzip curl"
|
|
echo ""
|
|
read -p "Continue with installation? (y/N) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "Installation cancelled."
|
|
exit 0
|
|
fi
|
|
|
|
echo ""
|
|
echo "Starting installation (commands will be shown as they run)..."
|
|
echo ""
|
|
|
|
# Enable command tracing
|
|
set -x
|
|
|
|
# Install prerequisites
|
|
sudo apt-get update
|
|
sudo apt-get install -y zip unzip curl
|
|
|
|
set +x
|
|
|
|
# Check if SDKMAN is already installed
|
|
if [ -d "$HOME/.sdkman" ]; then
|
|
echo ""
|
|
echo "============================================"
|
|
echo "SDKMAN is already installed at ~/.sdkman"
|
|
echo "To update SDKMAN, run: sdk selfupdate"
|
|
echo "============================================"
|
|
exit 0
|
|
fi
|
|
|
|
# Install SDKMAN
|
|
echo "Installing SDKMAN..."
|
|
set -x
|
|
|
|
if ! curl -s "https://get.sdkman.io" | bash; then
|
|
set +x
|
|
echo "Error: SDKMAN installation failed" >&2
|
|
exit 1
|
|
fi
|
|
|
|
set +x
|
|
|
|
# Source SDKMAN to make it available in current session
|
|
export SDKMAN_DIR="$HOME/.sdkman"
|
|
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
|
|
|
|
echo ""
|
|
echo "============================================"
|
|
# Verify installation
|
|
if [ -d "$HOME/.sdkman" ] && [ -f "$HOME/.sdkman/bin/sdkman-init.sh" ]; then
|
|
echo "SDKMAN installed successfully!"
|
|
echo ""
|
|
echo "To start using SDKMAN, either:"
|
|
echo " 1. Restart your shell, or"
|
|
echo " 2. Run: source ~/.bashrc"
|
|
echo ""
|
|
echo "Then you can install Java with:"
|
|
echo " sdk list java # List available Java versions"
|
|
echo " sdk install java # Install latest Java"
|
|
echo " sdk install java 21.0.1-tem # Install specific version"
|
|
echo ""
|
|
echo "Other useful SDKMAN commands:"
|
|
echo " sdk install gradle # Install Gradle"
|
|
echo " sdk install maven # Install Maven"
|
|
echo " sdk list # List all available SDKs"
|
|
else
|
|
echo "Error: SDKMAN installation verification failed" >&2
|
|
exit 1
|
|
fi
|
|
echo "============================================"
|