fix: add --branch flag and handle existing plugin on reinstall

The installer always cloned from main branch, making it impossible to test
changes on feature branches. Added --branch flag (e.g. --branch=openclaw-installer)
to override the default.

Also fixes "plugin already exists" error by removing the existing plugin
directory (~/.openclaw/extensions/claude-mem) before running plugins install,
allowing clean reinstallation without manual cleanup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Alex Newman
2026-02-12 17:10:59 -05:00
parent 6535ad597f
commit 76f984ce7c
+19 -2
View File
@@ -26,6 +26,7 @@ NON_INTERACTIVE=""
CLI_PROVIDER="" CLI_PROVIDER=""
CLI_API_KEY="" CLI_API_KEY=""
UPGRADE_MODE="" UPGRADE_MODE=""
CLI_BRANCH=""
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in
@@ -37,6 +38,14 @@ while [[ $# -gt 0 ]]; do
UPGRADE_MODE="true" UPGRADE_MODE="true"
shift shift
;; ;;
--branch=*)
CLI_BRANCH="${1#--branch=}"
shift
;;
--branch)
CLI_BRANCH="${2:-}"
shift 2
;;
--provider=*) --provider=*)
CLI_PROVIDER="${1#--provider=}" CLI_PROVIDER="${1#--provider=}"
shift shift
@@ -550,17 +559,25 @@ run_openclaw() {
############################################################################### ###############################################################################
CLAUDE_MEM_REPO="https://github.com/thedotmack/claude-mem.git" CLAUDE_MEM_REPO="https://github.com/thedotmack/claude-mem.git"
CLAUDE_MEM_BRANCH="${CLI_BRANCH:-main}"
install_plugin() { install_plugin() {
# Check for git before attempting clone # Check for git before attempting clone
check_git check_git
# Remove existing plugin installation to allow clean re-install
local existing_plugin_dir="${HOME}/.openclaw/extensions/claude-mem"
if [[ -d "$existing_plugin_dir" ]]; then
info "Removing existing claude-mem plugin at ${existing_plugin_dir}..."
rm -rf "$existing_plugin_dir"
fi
local build_dir local build_dir
build_dir="$(mktemp -d)" build_dir="$(mktemp -d)"
register_cleanup_dir "$build_dir" register_cleanup_dir "$build_dir"
info "Cloning claude-mem repository..." info "Cloning claude-mem repository (branch: ${CLAUDE_MEM_BRANCH})..."
if ! git clone --depth 1 "$CLAUDE_MEM_REPO" "$build_dir/claude-mem" 2>&1; then if ! git clone --depth 1 --branch "$CLAUDE_MEM_BRANCH" "$CLAUDE_MEM_REPO" "$build_dir/claude-mem" 2>&1; then
error "Failed to clone claude-mem repository" error "Failed to clone claude-mem repository"
error "Check your internet connection and try again." error "Check your internet connection and try again."
exit 1 exit 1