feat(install-options): add npm CLI reinstall helpers (Bash)
global_npm_package, cli_npm_package, read_cli_reinstall_option, and invoke_cli_reinstall are the Bash equivalent of the PowerShell npm reinstall helpers. Not wired into install.sh yet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6c3538f888
commit
ed8dd89ba7
1 file changed
+43
@@ -36,6 +36,49 @@ read_install_options() {
|
|||||||
semantic_retrieval=$(read_install_boolean 'Enable Qwen3 embedding and reranking semantic retrieval?' "$semantic_retrieval") || return
|
semantic_retrieval=$(read_install_boolean 'Enable Qwen3 embedding and reranking semantic retrieval?' "$semantic_retrieval") || return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
global_npm_package() {
|
||||||
|
command -v npm >/dev/null 2>&1 || return 1
|
||||||
|
npm list -g "$1" --depth=0 --json >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
cli_npm_package() {
|
||||||
|
case "$1" in
|
||||||
|
codex) printf '@openai/codex\n' ;;
|
||||||
|
claude) printf '@anthropic-ai/claude-code\n' ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# read_cli_reinstall_option <client> <dry_run> -- asked once per install run, never persisted;
|
||||||
|
# a dry run never prompts and never previews it.
|
||||||
|
read_cli_reinstall_option() {
|
||||||
|
local client=$1 dry_run=$2
|
||||||
|
if [ "$dry_run" = true ]; then printf 'false\n'; return; fi
|
||||||
|
read_install_boolean "Uninstall $client and reinstall via npm?" false
|
||||||
|
}
|
||||||
|
|
||||||
|
invoke_cli_reinstall() {
|
||||||
|
local client=$1 dry_run=$2 summary=${3:-false}
|
||||||
|
local selected_client clients=() package
|
||||||
|
case "$client" in codex|both) clients+=(codex) ;; esac
|
||||||
|
case "$client" in claude|both) clients+=(claude) ;; esac
|
||||||
|
for selected_client in "${clients[@]}"; do
|
||||||
|
if [ "$selected_client" = codex ] && [ "$dry_run" = false ] && codex_process_active; then
|
||||||
|
printf 'WARN Codex CLI reinstall skipped because codex.exe is running. Close all Codex sessions and run install again to reinstall the CLI.\n' >&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
package=$(cli_npm_package "$selected_client")
|
||||||
|
if global_npm_package "$package"; then
|
||||||
|
CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1 run_plugin_command "$dry_run" npm uninstall -g "$package" </dev/null || return
|
||||||
|
else
|
||||||
|
printf 'WARN %s CLI was not found as a global npm package; a non-npm installation cannot be removed automatically. Installing %s via npm alongside it.\n' "$selected_client" "$package" >&2
|
||||||
|
fi
|
||||||
|
CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1 run_plugin_command "$dry_run" npm install -g "${package}@latest" </dev/null || return
|
||||||
|
if [ "$summary" = true ]; then
|
||||||
|
if [ "$dry_run" = true ]; then printf 'CLI %s reinstall: dry-run\n' "$selected_client"; else printf 'CLI %s reinstall: PASS\n' "$selected_client"; fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
is_windows_host() {
|
is_windows_host() {
|
||||||
case "${OSTYPE:-}" in msys*|cygwin*|win32*) return 0 ;; *) return 1 ;; esac
|
case "${OSTYPE:-}" in msys*|cygwin*|win32*) return 0 ;; *) return 1 ;; esac
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user