Installation Script for Profile Use
#!/bin/sh
set -e
REPO="browser-use/profile-use-releases"
BINARY_NAME="profile-use"
WORK_DIR="${TMPDIR:-$HOME/.cache/profile-use-installer}"
cleanup() {
[ -f "$TMP_FILE" ] && rm -f "$TMP_FILE"
}
trap cleanup EXIT INT TERM
detect_os() {
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
case "$OS" in
linux*) OS='linux' ;;
darwin*) OS='darwin' ;;
msys*|mingw*|cygwin*) OS='windows' ;;
*)
echo "Error: Unsupported OS: $(uname -s)" >&2
exit 1
;;
esac
}
detect_arch() {
ARCH=$(uname -m)
case "$ARCH" in
x86_64|amd64) ARCH='amd64' ;;
aarch64|arm64) ARCH='arm64' ;;
*)
echo "Error: Unsupported architecture: $(uname -m)" >&2
exit 1
;;
esac
}
get_latest_version() {
VERSION=$(curl -s "https://api.github.com/repos/$REPO/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
if [ -z "$VERSION" ]; then
echo "Error: Failed to fetch latest version" >&2
exit 1
fi
}
download_and_run() {
mkdir -p "$WORK_DIR"
BINARY_URL="https://github.com/$REPO/releases/download/$VERSION/${BINARY_NAME}-${OS}-${ARCH}"
if [ "$OS" = "windows" ]; then
BINARY_URL="${BINARY_URL}.exe"
TMP_FILE="$WORK_DIR/${BINARY_NAME}.exe"
else
TMP_FILE="$WORK_DIR/$BINARY_NAME"
fi
if command -v curl >/dev/null 2>&1; then
if ! curl -fsSL --retry 3 --retry-delay 1 -o "$TMP_FILE" "$BINARY_URL"; then
echo "Error: Download failed from $BINARY_URL" >&2
exit 1
fi
elif command -v wget >/dev/null 2>&1; then
if ! wget -q -O "$TMP_FILE" "$BINARY_URL"; then
echo "Error: Download failed from $BINARY_URL" >&2
exit 1
fi
else
echo "Error: curl or wget required" >&2
exit 1
fi
chmod +x "$TMP_FILE" 2>/dev/null || true
[ "$OS" = "darwin" ] && xattr -d com.apple.quarantine "$TMP_FILE" 2>/dev/null || true
# Pass BROWSER_USE_API_KEY if set
if [ -n "${BROWSER_USE_API_KEY:-}" ]; then
export BROWSER_USE_API_KEY
fi
"$TMP_FILE"
}