#!/bin/bash set -euo pipefail BIN_DIR="${BIN_DIR:-$HOME/.local/bin}" COMPLETION_DIR="${COMPLETION_DIR:-$HOME/.bash_completion.d}" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" MODE="install" if [ $# -gt 0 ]; then case "$1" in -u|--uninstall) MODE="uninstall" ;; -h|--help) echo "Usage: $0 [-u|--uninstall]" echo "Install (default) or uninstall lxcd for the current user." echo "" echo "Locations (override with env vars):" echo " BIN_DIR (default: \$HOME/.local/bin)" echo " COMPLETION_DIR (default: \$HOME/.bash_completion.d)" echo "" echo "Examples:" echo " $0 # install (per-user)" echo " $0 -u # uninstall (per-user)" echo " sudo BIN_DIR=/usr/local/bin COMPLETION_DIR=/etc/bash_completion.d $0" exit 0 ;; *) echo "Unknown argument: $1 (use -h for help)" >&2; exit 1 ;; esac fi if [ "$MODE" = "uninstall" ]; then rm -f "${BIN_DIR}/lxcd" rm -f "${COMPLETION_DIR}/lxcd" echo "lxcd uninstalled." # Prompt about the per-user config file (safe to keep; only data, no binaries) LXCDRC="${LXCDRC:-$HOME/.lxcdrc}" if [ -f "$LXCDRC" ] || [ -d "$LXCDRC" ]; then echo "" read -r -p "Remove your lxcd config file (${LXCDRC})? [y/N] " ans if [[ "$ans" =~ ^[Yy]$ ]]; then rm -rf "$LXCDRC" echo "Removed ${LXCDRC}." else echo "Keeping ${LXCDRC}." fi fi exit 0 fi echo "Installing to user-local locations (no sudo needed):" echo " bin: $BIN_DIR" echo " completion: $COMPLETION_DIR" echo "" echo "To install system-wide instead, use:" echo " sudo BIN_DIR=/usr/local/bin COMPLETION_DIR=/etc/bash_completion.d $0" echo "" mkdir -p "$BIN_DIR" "$COMPLETION_DIR" echo "Installing lxcd to ${BIN_DIR}/lxcd..." cp "$SCRIPT_DIR/lxcd.py" "${BIN_DIR}/lxcd" chmod 755 "${BIN_DIR}/lxcd" if [ -f "$SCRIPT_DIR/lxcd.completion" ]; then echo "Installing bash completion to ${COMPLETION_DIR}/lxcd..." cp "$SCRIPT_DIR/lxcd.completion" "${COMPLETION_DIR}/lxcd" fi echo "" echo "lxcd installed successfully!" echo "Usage: lxcd --help" echo "" echo "Remember to reload your shell so PATH includes ${BIN_DIR}:" echo " exec bash -l # login shell — reads ~/.profile (or open a new terminal)"