orama/scripts/install.sh
anonpenguin23 5456d57aeb feat(sandbox): add preflight checks and auto-build archive to create
- validate agent, API token, archive before provisioning
- auto-build archive via `make build-archive` if missing
- add tests and Makefile install target
2026-03-26 17:33:19 +02:00

96 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Orama CLI installer
# Builds the CLI and adds `orama` to your PATH.
# Usage: ./scripts/install.sh [--shell fish|zsh|bash]
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
BIN_DIR="$HOME/.local/bin"
BIN_PATH="$BIN_DIR/orama"
# --- Parse args ---
SHELL_NAME=""
while [[ $# -gt 0 ]]; do
case "$1" in
--shell) SHELL_NAME="$2"; shift 2 ;;
-h|--help)
echo "Usage: ./scripts/install.sh [--shell fish|zsh|bash]"
echo ""
echo "Builds the Orama CLI and installs 'orama' to ~/.local/bin."
echo "If --shell is not provided, auto-detects from \$SHELL."
exit 0 ;;
*) echo "Unknown option: $1"; exit 1 ;;
esac
done
# Auto-detect shell
if [[ -z "$SHELL_NAME" ]]; then
case "$SHELL" in
*/fish) SHELL_NAME="fish" ;;
*/zsh) SHELL_NAME="zsh" ;;
*/bash) SHELL_NAME="bash" ;;
*) SHELL_NAME="unknown" ;;
esac
fi
echo "==> Shell: $SHELL_NAME"
# --- Build ---
echo "==> Building Orama CLI..."
(cd "$PROJECT_DIR" && make build)
# --- Install binary ---
mkdir -p "$BIN_DIR"
cp -f "$PROJECT_DIR/bin/orama" "$BIN_PATH"
chmod +x "$BIN_PATH"
echo "==> Installed $BIN_PATH"
# --- Ensure PATH ---
add_to_path() {
local rc_file="$1"
local line="$2"
if [[ -f "$rc_file" ]] && grep -qF "$line" "$rc_file"; then
echo "==> PATH already configured in $rc_file"
else
echo "" >> "$rc_file"
echo "$line" >> "$rc_file"
echo "==> Added PATH to $rc_file"
fi
}
case "$SHELL_NAME" in
fish)
FISH_CONFIG="$HOME/.config/fish/config.fish"
mkdir -p "$(dirname "$FISH_CONFIG")"
add_to_path "$FISH_CONFIG" "fish_add_path $BIN_DIR"
;;
zsh)
add_to_path "$HOME/.zshrc" "export PATH=\"$BIN_DIR:\$PATH\""
;;
bash)
add_to_path "$HOME/.bashrc" "export PATH=\"$BIN_DIR:\$PATH\""
;;
*)
echo "==> Unknown shell. Add this to your shell config manually:"
echo " export PATH=\"$BIN_DIR:\$PATH\""
;;
esac
# --- Verify ---
VERSION=$("$BIN_PATH" version 2>/dev/null || echo "unknown")
echo ""
echo "==> Orama CLI ${VERSION} installed!"
echo " Run: orama --help"
echo ""
if [[ "$SHELL_NAME" != "unknown" ]]; then
echo " Restart your terminal or run:"
case "$SHELL_NAME" in
fish) echo " source ~/.config/fish/config.fish" ;;
zsh) echo " source ~/.zshrc" ;;
bash) echo " source ~/.bashrc" ;;
esac
fi