docs: cross-platform install/update/uninstall instructions for codex/gemini/qwen
- Add Linux / macOS / Windows PowerShell / Windows CMD sections to all CLI READMEs - Update product table versions (claude v2.1.112, codex v0.116.0, qwen v0.14.5) - Make qwen install/update/uninstall scripts macOS-aware (sedi wrapper, launchctl, /Users scan, ~/.zshrc) - Make gemini uninstall script macOS-aware (matching install/update) - Fix CRLF line endings in qwen/gemini uninstall scripts Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,24 @@ REGISTRY_URL="https://npm.sensey24.ru/"
|
||||
NPM_SCOPE="@qwen-code"
|
||||
NPM_PACKAGE="@qwen-code/qwen-code"
|
||||
|
||||
ENV_FILE="/etc/profile.d/qwen-code.sh"
|
||||
OS="$(uname -s)"
|
||||
IS_MACOS=false
|
||||
[ "$OS" = "Darwin" ] && IS_MACOS=true
|
||||
|
||||
if $IS_MACOS; then
|
||||
ENV_FILE="/etc/qwen-code-env.sh"
|
||||
else
|
||||
ENV_FILE="/etc/profile.d/qwen-code.sh"
|
||||
fi
|
||||
|
||||
# Cross-platform sed -i (macOS BSD sed requires -i '' while GNU sed uses -i)
|
||||
sedi() {
|
||||
if $IS_MACOS; then
|
||||
sed -i '' "$@"
|
||||
else
|
||||
sed -i "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
GREEN="\033[92m"
|
||||
RED="\033[91m"
|
||||
@@ -211,23 +228,55 @@ info "Setting environment variables..."
|
||||
API_KEY=$(python3 -c "import json; print(json.load(open('$INSTALL_DIR/qwen_config.json'))['api_key'])")
|
||||
BASE_URL=$(python3 -c "import json; print(json.load(open('$INSTALL_DIR/qwen_config.json'))['base_url'])")
|
||||
|
||||
ETC_ENV="/etc/environment"
|
||||
for kv in "QWEN_API_KEY=\"$API_KEY\"" "QWEN_BASE_URL=\"$BASE_URL\""; do
|
||||
KEY="${kv%%=*}"
|
||||
if grep -q "^${KEY}=" "$ETC_ENV" 2>/dev/null; then
|
||||
sed -i "s|^${KEY}=.*|${kv}|" "$ETC_ENV"
|
||||
else
|
||||
echo "$kv" >> "$ETC_ENV"
|
||||
fi
|
||||
done
|
||||
log "Env vars written to $ETC_ENV"
|
||||
if $IS_MACOS; then
|
||||
# macOS: no /etc/environment, no /etc/profile.d
|
||||
launchctl setenv QWEN_API_KEY "$API_KEY" 2>/dev/null || true
|
||||
launchctl setenv QWEN_BASE_URL "$BASE_URL" 2>/dev/null || true
|
||||
log "Env vars set via launchctl"
|
||||
|
||||
cat > "$ENV_FILE" << PROF_EOF
|
||||
cat > "$ENV_FILE" << ENVEOF
|
||||
export QWEN_API_KEY="$API_KEY"
|
||||
export QWEN_BASE_URL="$BASE_URL"
|
||||
ENVEOF
|
||||
chmod 644 "$ENV_FILE"
|
||||
log "Env file: $ENV_FILE"
|
||||
|
||||
# Add source to user shell rc files
|
||||
REAL_HOME="$HOME"
|
||||
if [ -n "${SUDO_USER:-}" ] && [ "$SUDO_USER" != "root" ]; then
|
||||
REAL_HOME=$(eval echo "~$SUDO_USER")
|
||||
fi
|
||||
for rc_file in "$REAL_HOME/.zshrc" "$REAL_HOME/.bashrc"; do
|
||||
if [ -f "$rc_file" ] || [ "$rc_file" = "$REAL_HOME/.zshrc" ]; then
|
||||
if [ -f "$rc_file" ]; then
|
||||
sedi '/# Qwen env/d' "$rc_file"
|
||||
sedi '/qwen-code-env\.sh/d' "$rc_file"
|
||||
fi
|
||||
echo "[ -f $ENV_FILE ] && . $ENV_FILE # Qwen env" >> "$rc_file"
|
||||
log "Added source to $rc_file"
|
||||
fi
|
||||
done
|
||||
else
|
||||
# Linux: /etc/environment for all users
|
||||
ETC_ENV="/etc/environment"
|
||||
for kv in "QWEN_API_KEY=\"$API_KEY\"" "QWEN_BASE_URL=\"$BASE_URL\""; do
|
||||
KEY="${kv%%=*}"
|
||||
if grep -q "^${KEY}=" "$ETC_ENV" 2>/dev/null; then
|
||||
sedi "s|^${KEY}=.*|${kv}|" "$ETC_ENV"
|
||||
else
|
||||
echo "$kv" >> "$ETC_ENV"
|
||||
fi
|
||||
done
|
||||
log "Env vars written to $ETC_ENV"
|
||||
|
||||
mkdir -p /etc/profile.d
|
||||
cat > "$ENV_FILE" << PROF_EOF
|
||||
export QWEN_API_KEY="$API_KEY"
|
||||
export QWEN_BASE_URL="$BASE_URL"
|
||||
PROF_EOF
|
||||
chmod 644 "$ENV_FILE"
|
||||
log "Env file: $ENV_FILE"
|
||||
chmod 644 "$ENV_FILE"
|
||||
log "Env file: $ENV_FILE"
|
||||
fi
|
||||
|
||||
# ---- Create wrapper (auto-loads env) ----
|
||||
|
||||
|
||||
Reference in New Issue
Block a user