mirror of
https://github.com/skoelle/kctl-tui.git
synced 2026-09-17 20:10:24 +00:00
Add CI workflow, install.sh, and example config
This commit is contained in:
+64
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
# Install script for kctl-tui.
|
||||
# Downloads the latest GitHub release binary matching the current OS/arch
|
||||
# and installs it to /usr/local/bin (or $INSTALL_DIR if set).
|
||||
#
|
||||
# Usage:
|
||||
# curl -fsSL https://raw.githubusercontent.com/skoelle/kctl-tui/main/install.sh | bash
|
||||
#
|
||||
# Requires: curl, a supported OS (linux, darwin).
|
||||
# Native Windows is not supported by this script; use WSL, or download the
|
||||
# .exe asset manually from the Releases page.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REPO="skoelle/kctl-tui"
|
||||
INSTALL_DIR="${INSTALL_DIR:-/usr/local/bin}"
|
||||
BIN_NAME="kctl-tui"
|
||||
|
||||
os="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
||||
arch="$(uname -m)"
|
||||
|
||||
case "$arch" in
|
||||
x86_64|amd64) arch="amd64" ;;
|
||||
arm64|aarch64) arch="arm64" ;;
|
||||
*)
|
||||
echo "Unsupported architecture: $arch" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$os" in
|
||||
linux|darwin) ;;
|
||||
*)
|
||||
echo "Unsupported OS: $os. On Windows, use WSL or download the .exe from the Releases page." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Detecting latest release for $REPO ..."
|
||||
latest_tag="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep -m1 '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')"
|
||||
|
||||
if [ -z "$latest_tag" ]; then
|
||||
echo "Could not determine latest release tag. Is there at least one published release?" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
asset="kctl-tui-${os}-${arch}"
|
||||
url="https://github.com/${REPO}/releases/download/${latest_tag}/${asset}"
|
||||
|
||||
echo "Downloading ${asset} (${latest_tag}) ..."
|
||||
tmp_file="$(mktemp)"
|
||||
curl -fsSL "$url" -o "$tmp_file"
|
||||
chmod +x "$tmp_file"
|
||||
|
||||
if [ -w "$INSTALL_DIR" ]; then
|
||||
mv "$tmp_file" "${INSTALL_DIR}/${BIN_NAME}"
|
||||
else
|
||||
echo "Elevated permissions required to write to ${INSTALL_DIR}"
|
||||
sudo mv "$tmp_file" "${INSTALL_DIR}/${BIN_NAME}"
|
||||
fi
|
||||
|
||||
echo "Installed ${BIN_NAME} to ${INSTALL_DIR}/${BIN_NAME}"
|
||||
"${INSTALL_DIR}/${BIN_NAME}" --help >/dev/null 2>&1 || true
|
||||
echo "Done. Run '${BIN_NAME}' to get started."
|
||||
Reference in New Issue
Block a user