diff --git a/install.sh b/install.sh old mode 100644 new mode 100755 index 51a2c56..c7b583a --- a/install.sh +++ b/install.sh @@ -1,63 +1,65 @@ #!/usr/bin/env bash set -e -REPO_DIR="$(cd "$(dirname "$0")" && pwd)" +# Detect repository directory dynamically +REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CFG_ROOT="$HOME/.config/MyI3Config" I3_DIR="$HOME/.config/i3" +# Ask yes/no questions ask() { - printf "%s [y/N]: " "$1" - read -r ans - [ "$ans" = "y" ] || [ "$ans" = "Y" ] + printf "%s [y/N]: " "$1" + read -r ans + [[ "$ans" =~ ^[Yy]$ ]] } +# Ask for application command, verify exists in PATH ask_app() { - local label="$1" - local default="$2" - local app + local label="$1" + local default="$2" + local app + while true; do + printf "%s (default: %s): " "$label" "$default" + read -r app + app="${app:-$default}" - while true; do - printf "%s (default: %s): " "$label" "$default" - read -r app - app="${app:-$default}" - - if command -v "$app" >/dev/null 2>&1; then - echo "$app" - return - else - echo "✗ '$app' not found in PATH" - echo " install it first or choose another" - fi - done + if command -v "${app%% *}" >/dev/null 2>&1; then + echo "$app" + return + else + echo "✗ '$app' not found in PATH" + echo " install it first or choose another" + fi + done } echo "=== MyI3Config installer ===" echo if ! ask "Install this i3 configuration?"; then - echo "Aborted." - exit 0 + echo "Aborted." + exit 0 fi echo -echo "[1/4] Installing packages" +echo "[1/4] Installing packages..." sudo pacman -S --needed $(grep -v '^#' "$REPO_DIR/packages.txt") echo -echo "[2/4] Choose applications" +echo "[2/4] Choose applications..." TERMINAL=$(ask_app "Terminal" "kitty") BROWSER=$(ask_app "Browser" "firefox") FILEMANAGER=$(ask_app "File manager" "nautilus") CALCULATOR=$(ask_app "Calculator" "gnome-calculator") echo -echo "[3/4] Installing MyI3Config" +echo "[3/4] Installing MyI3Config..." rm -rf "$CFG_ROOT" mkdir -p "$CFG_ROOT" cp -r "$REPO_DIR/"* "$CFG_ROOT" echo -echo "[4/4] Writing settings" +echo "[4/4] Writing settings..." echo "$TERMINAL" > "$CFG_ROOT/settings/terminal.sh" echo "$BROWSER" > "$CFG_ROOT/settings/browser.sh" echo "$FILEMANAGER" > "$CFG_ROOT/settings/filemanager.sh"