75 lines
2.4 KiB
Bash
Executable File
75 lines
2.4 KiB
Bash
Executable File
#!/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)"
|