-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
76 lines (66 loc) · 2.71 KB
/
Copy pathinstall.sh
File metadata and controls
76 lines (66 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/sh
# Usage: curl -fsSL https://raw.githubusercontent.com/sorphwer/zendesk-kg-cli-release/main/install.sh | sh
set -e
REPO="sorphwer/zendesk-kg-cli-release"
INSTALL_DIR="$HOME/.zendesk-kg"
BINARY_NAME="zendesk-kg"
info() { printf ' \033[1;34m>\033[0m %s\n' "$1"; }
error() { printf ' \033[1;31mError:\033[0m %s\n' "$1" >&2; exit 1; }
# Detect OS/arch
OS="$(uname -s)"; ARCH="$(uname -m)"
case "$OS" in
Darwin) PLATFORM="macos" ;;
Linux) PLATFORM="linux" ;;
*) error "Unsupported OS: $OS" ;;
esac
case "$ARCH" in
arm64|aarch64) ARCH_TAG="arm64" ;;
x86_64|amd64) ARCH_TAG="amd64" ;;
*) error "Unsupported architecture: $ARCH" ;;
esac
ASSET_PATTERN="${BINARY_NAME}-.*-${PLATFORM}-${ARCH_TAG}"
# Fetch latest release
info "Fetching latest release ..."
RELEASE_JSON="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest")"
TAG="$(printf '%s' "$RELEASE_JSON" | grep '"tag_name"' | head -1 | sed 's/.*: *"\(.*\)".*/\1/')"
DOWNLOAD_URL="$(printf '%s' "$RELEASE_JSON" | grep '"browser_download_url"' | grep -E "$ASSET_PATTERN" | head -1 | sed 's/.*: *"\(.*\)".*/\1/')"
[ -n "$DOWNLOAD_URL" ] || error "No asset found for ${PLATFORM}-${ARCH_TAG}"
TMPDIR="$(mktemp -d)"; trap 'rm -rf "$TMPDIR"' EXIT
FILENAME="$(basename "$DOWNLOAD_URL")"
info "Downloading $FILENAME ..."
curl -fsSL -o "$TMPDIR/$FILENAME" "$DOWNLOAD_URL"
# Extract and install
mkdir -p "$INSTALL_DIR"
chmod 700 "$INSTALL_DIR"
case "$FILENAME" in
*.dmg)
MOUNT="$TMPDIR/mnt"; mkdir -p "$MOUNT"
hdiutil attach "$TMPDIR/$FILENAME" -mountpoint "$MOUNT" -nobrowse -quiet
cp "$MOUNT/$BINARY_NAME" "$INSTALL_DIR/$BINARY_NAME"
chmod +x "$INSTALL_DIR/$BINARY_NAME"
hdiutil detach "$MOUNT" -quiet 2>/dev/null || true
;;
*.tar.gz)
EXT="$TMPDIR/ext"; mkdir -p "$EXT"
tar -xzf "$TMPDIR/$FILENAME" -C "$EXT"
cp "$EXT/$BINARY_NAME" "$INSTALL_DIR/$BINARY_NAME"
chmod +x "$INSTALL_DIR/$BINARY_NAME"
;;
esac
# Create .env template if it doesn't exist
if [ ! -f "$INSTALL_DIR/.env" ]; then
printf '# Zendesk KG CLI configuration\n# Generate your API key from the web UI\nRETRIEVER_API_KEY=\nRETRIEVER_API_URL=\n' > "$INSTALL_DIR/.env"
chmod 600 "$INSTALL_DIR/.env"
fi
# Add to PATH
if [ -n "$ZSH_VERSION" ] || [ "$SHELL" = "$(command -v zsh 2>/dev/null)" ]; then
RC="$HOME/.zshrc"
else
RC="$HOME/.bashrc"
fi
grep -qF '.zendesk-kg' "$RC" 2>/dev/null || printf '\n# Zendesk KG CLI\nexport PATH="$HOME/.zendesk-kg:$PATH"\n' >> "$RC"
export PATH="$INSTALL_DIR:$PATH"
INSTALLED_VER="$("$INSTALL_DIR/$BINARY_NAME" --version 2>/dev/null || echo "unknown")"
echo ""
echo " zendesk-kg $INSTALLED_VER installed!"
echo " Run: source $RC && zendesk-kg init"