docs: overhaul docs IA and multilingual navigation
This commit is contained in:
parent
5e800c38f1
commit
93e5383cb2
40 changed files with 2495 additions and 198 deletions
179
scripts/install.sh
Normal file → Executable file
179
scripts/install.sh
Normal file → Executable file
|
|
@ -1,151 +1,58 @@
|
|||
#!/usr/bin/env bash
|
||||
# install.sh — Build and install ZeroClaw from source.
|
||||
# Usage:
|
||||
# curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/install.sh | bash
|
||||
# # or
|
||||
# bash scripts/install.sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# --- Logging --------------------------------------------------------------
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" >/dev/null 2>&1 && pwd || pwd)"
|
||||
BOOTSTRAP_LOCAL="$SCRIPT_DIR/bootstrap.sh"
|
||||
REPO_URL="https://github.com/zeroclaw-labs/zeroclaw.git"
|
||||
|
||||
info() { printf ">>> %s\n" "$*"; }
|
||||
warn() { printf ">>> [WARN] %s\n" "$*"; }
|
||||
error() { printf ">>> [ERROR] %s\n" "$*" >&2; }
|
||||
die() { error "$@"; exit 1; }
|
||||
echo "[deprecated] scripts/install.sh -> bootstrap.sh" >&2
|
||||
|
||||
# --- Step 1: Detect OS and install system dependencies --------------------
|
||||
if [[ -f "$BOOTSTRAP_LOCAL" ]]; then
|
||||
exec "$BOOTSTRAP_LOCAL" "$@"
|
||||
fi
|
||||
|
||||
install_system_deps() {
|
||||
info "Detecting operating system..."
|
||||
|
||||
local os
|
||||
os="$(uname -s)"
|
||||
|
||||
case "${os}" in
|
||||
Linux)
|
||||
install_linux_deps
|
||||
;;
|
||||
Darwin)
|
||||
install_macos_deps
|
||||
;;
|
||||
*)
|
||||
die "Unsupported operating system: ${os}. Only Linux and macOS are supported."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
install_linux_deps() {
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
info "Detected Debian/Ubuntu — installing build-essential, pkg-config, git..."
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y build-essential pkg-config git
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
info "Detected Fedora/RHEL — installing Development Tools, pkg-config, git..."
|
||||
sudo dnf groupinstall -y "Development Tools"
|
||||
sudo dnf install -y pkg-config git
|
||||
else
|
||||
die "Unsupported Linux distribution. Please install a C compiler, pkg-config, and git manually, then re-run this script."
|
||||
fi
|
||||
}
|
||||
|
||||
install_macos_deps() {
|
||||
if ! xcode-select -p >/dev/null 2>&1; then
|
||||
info "Installing Xcode Command Line Tools..."
|
||||
xcode-select --install
|
||||
warn "A dialog may have appeared. Please complete the Xcode CLT installation, then re-run this script."
|
||||
exit 0
|
||||
else
|
||||
info "Xcode Command Line Tools already installed."
|
||||
fi
|
||||
|
||||
if ! command -v git >/dev/null 2>&1; then
|
||||
die "git not found. Please install git (e.g. via Homebrew) and re-run this script."
|
||||
fi
|
||||
}
|
||||
|
||||
# --- Step 2: Install Rust -------------------------------------------------
|
||||
|
||||
install_rust() {
|
||||
if command -v rustc >/dev/null 2>&1; then
|
||||
info "Rust already installed ($(rustc --version))."
|
||||
else
|
||||
info "Installing Rust via rustup..."
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
# shellcheck source=/dev/null
|
||||
source "${HOME}/.cargo/env"
|
||||
info "Rust installed ($(rustc --version))."
|
||||
fi
|
||||
}
|
||||
|
||||
# --- Step 3: Clone repository ---------------------------------------------
|
||||
|
||||
CLONE_DIR="/tmp/zeroclaw-install"
|
||||
|
||||
clone_repo() {
|
||||
if [ -d "${CLONE_DIR}" ]; then
|
||||
info "Removing previous clone at ${CLONE_DIR}..."
|
||||
rm -rf "${CLONE_DIR}"
|
||||
fi
|
||||
|
||||
info "Cloning ZeroClaw repository..."
|
||||
git clone --depth 1 https://github.com/zeroclaw-labs/zeroclaw.git "${CLONE_DIR}"
|
||||
}
|
||||
|
||||
# --- Step 4: Build and install --------------------------------------------
|
||||
|
||||
build_and_install() {
|
||||
info "Building ZeroClaw (release mode)..."
|
||||
cargo build --release --locked --manifest-path "${CLONE_DIR}/Cargo.toml"
|
||||
|
||||
info "Installing ZeroClaw binary..."
|
||||
cargo install --path "${CLONE_DIR}" --force --locked
|
||||
}
|
||||
|
||||
# --- Step 5: Cleanup ------------------------------------------------------
|
||||
if ! command -v git >/dev/null 2>&1; then
|
||||
echo "error: git is required for legacy install.sh remote mode" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TEMP_DIR="$(mktemp -d -t zeroclaw-install-XXXXXX)"
|
||||
cleanup() {
|
||||
info "Cleaning up build directory..."
|
||||
rm -rf "${CLONE_DIR}"
|
||||
rm -rf "$TEMP_DIR"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
# --- Step 6: Success message ----------------------------------------------
|
||||
git clone --depth 1 "$REPO_URL" "$TEMP_DIR" >/dev/null 2>&1
|
||||
|
||||
print_success() {
|
||||
echo ""
|
||||
info "ZeroClaw installed successfully!"
|
||||
echo ""
|
||||
echo " To use zeroclaw in your current shell, run:"
|
||||
echo ""
|
||||
echo " source \"\${HOME}/.cargo/env\""
|
||||
echo ""
|
||||
echo " To make it permanent, add the line above to your shell profile"
|
||||
echo " (~/.bashrc, ~/.zshrc, etc.)."
|
||||
echo ""
|
||||
echo " Then get started:"
|
||||
echo ""
|
||||
echo " zeroclaw onboard"
|
||||
echo ""
|
||||
}
|
||||
if [[ -x "$TEMP_DIR/scripts/bootstrap.sh" ]]; then
|
||||
"$TEMP_DIR/scripts/bootstrap.sh" "$@"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# --- Main -----------------------------------------------------------------
|
||||
echo "[deprecated] cloned revision has no bootstrap.sh; falling back to legacy source install flow" >&2
|
||||
|
||||
main() {
|
||||
echo ""
|
||||
info "ZeroClaw — Source Install"
|
||||
echo ""
|
||||
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
|
||||
cat <<'USAGE'
|
||||
Legacy install.sh fallback mode
|
||||
|
||||
install_system_deps
|
||||
echo ""
|
||||
install_rust
|
||||
echo ""
|
||||
clone_repo
|
||||
echo ""
|
||||
build_and_install
|
||||
echo ""
|
||||
cleanup
|
||||
echo ""
|
||||
print_success
|
||||
}
|
||||
Behavior:
|
||||
- Clone repository
|
||||
- cargo build --release --locked
|
||||
- cargo install --path <clone> --force --locked
|
||||
|
||||
main
|
||||
For the new dual-mode installer, use:
|
||||
./bootstrap.sh --help
|
||||
USAGE
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! command -v cargo >/dev/null 2>&1; then
|
||||
echo "error: cargo is required for legacy install.sh fallback mode" >&2
|
||||
echo "Install Rust first: https://rustup.rs/" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cargo build --release --locked --manifest-path "$TEMP_DIR/Cargo.toml"
|
||||
cargo install --path "$TEMP_DIR" --force --locked
|
||||
|
||||
echo "Legacy source install completed." >&2
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue