From 638742c8ab406a03846c929d73c1a26827d15704 Mon Sep 17 00:00:00 2001 From: delta-cloud-208e Date: Sun, 8 Mar 2026 10:37:39 +0000 Subject: [PATCH] fix(qwen): system-wide env vars via /etc/environment + /etc/profile.d/ Same pattern as codex and gemini: - Write QWEN_API_KEY + QWEN_BASE_URL to /etc/environment (all users) - Create /etc/profile.d/qwen-code.sh for login shell export - Update script now also sets env vars (was missing) - Fix CRLF line endings Co-Authored-By: Claude Opus 4.6 --- qwen/uqwen_install.sh | 466 +++++++++++++++++++++--------------------- qwen/uqwen_update.sh | 218 +++++++++++--------- 2 files changed, 354 insertions(+), 330 deletions(-) diff --git a/qwen/uqwen_install.sh b/qwen/uqwen_install.sh index 374d488..0998756 100755 --- a/qwen/uqwen_install.sh +++ b/qwen/uqwen_install.sh @@ -1,234 +1,232 @@ -#!/usr/bin/env bash -# Qwen Code — One-line installer -# Usage: -# curl -fsSL -H "Authorization: token TOKEN" \ -# https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_install.sh \ -# -o /tmp/uqwen.sh && sudo bash /tmp/uqwen.sh -set -euo pipefail - -GITEA_TOKEN="${GITEA_TOKEN:-cadffcb0a6a3be728ac1ff619bb40c86588f6837}" -REPO_RAW="https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen" -REGISTRY_URL="https://npm.sensey24.ru/" -NPM_SCOPE="@qwen-code" -NPM_PACKAGE="@qwen-code/qwen-code" - -GREEN="\033[92m" -RED="\033[91m" -CYAN="\033[96m" -YELLOW="\033[93m" -BOLD="\033[1m" -RESET="\033[0m" - -log() { echo -e "${GREEN}[+]${RESET} $*"; } -err() { echo -e "${RED}[!]${RESET} $*" >&2; } -info() { echo -e "${CYAN}[i]${RESET} $*"; } -warn() { echo -e "${YELLOW}[~]${RESET} $*"; } - -echo -e "${BOLD}" -echo " +--------------------------------------+" -echo " | Qwen Code — Installer |" -echo " +--------------------------------------+" -echo -e "${RESET}" - -# ---- Auto-install prerequisites ---- - -install_pkg() { - if command -v apt-get >/dev/null 2>&1; then - apt-get update -qq && apt-get install -y -qq "$@" - elif command -v dnf >/dev/null 2>&1; then - dnf install -y -q "$@" - elif command -v yum >/dev/null 2>&1; then - yum install -y -q "$@" - elif command -v brew >/dev/null 2>&1; then - brew install "$@" - else - err "No package manager found. Install $* manually." - return 1 - fi -} - -# Python3 -if ! command -v python3 &>/dev/null; then - info "python3 not found, installing..." - install_pkg python3 -fi -log "Python3 $(python3 --version | awk '{print $2}')" - -# curl -if ! command -v curl &>/dev/null; then - info "curl not found, installing..." - install_pkg curl -fi - -# Node.js >= 20 -install_node() { - info "Installing Node.js v24.x..." - if command -v apt-get >/dev/null 2>&1; then - curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs - elif command -v dnf >/dev/null 2>&1; then - curl -fsSL https://rpm.nodesource.com/setup_24.x | bash - && dnf install -y nodejs - elif command -v yum >/dev/null 2>&1; then - curl -fsSL https://rpm.nodesource.com/setup_24.x | bash - && yum install -y nodejs - elif command -v brew >/dev/null 2>&1; then - brew install node - else - err "Cannot auto-install Node.js. Install manually: https://nodejs.org/" - exit 1 - fi -} - -if ! command -v node &>/dev/null; then - install_node -fi - -NODE_VER=$(node -v | sed 's/v//' | cut -d. -f1) -if [ "$NODE_VER" -lt 20 ]; then - warn "Node.js >= 20 required (found v$NODE_VER). Upgrading..." - install_node - NODE_VER=$(node -v | sed 's/v//' | cut -d. -f1) -fi -log "Node.js $(node -v)" - -# ---- Configure npm registry ---- - -info "Configuring npm registry: ${REGISTRY_URL}" -npm config set "${NPM_SCOPE}:registry" "${REGISTRY_URL}" 2>/dev/null || true - -# ---- Install Qwen Code ---- - -install_qwen_npm() { - local attempt=1 - local max_attempts=3 - while [ $attempt -le $max_attempts ]; do - info "Installing ${NPM_PACKAGE} (attempt ${attempt}/${max_attempts})..." - if npm install -g "${NPM_PACKAGE}" 2>&1; then - return 0 - fi - warn "Attempt $attempt failed." - attempt=$((attempt + 1)) - [ $attempt -le $max_attempts ] && sleep 3 - done - return 1 -} - -QWEN_BIN="" -for candidate in qwen qwen-code; do - if command -v "$candidate" &>/dev/null; then - QWEN_BIN="$candidate" - break - fi -done - -if [ -z "$QWEN_BIN" ]; then - if ! install_qwen_npm; then - err "npm install failed after retries." - err "" - err "Possible fixes:" - err " 1. Try HTTP instead of HTTPS:" - err " npm config set ${NPM_SCOPE}:registry http://npm.sensey24.ru/" - err " npm install -g ${NPM_PACKAGE}" - err "" - err " 2. Install from official npm + patch separately:" - err " npm install -g ${NPM_PACKAGE}" - err " # then re-run this script to apply patches" - exit 1 - fi - # Find the binary after install - for candidate in qwen qwen-code; do - if command -v "$candidate" &>/dev/null; then - QWEN_BIN="$candidate" - break - fi - done - log "Qwen Code installed" -else - log "Qwen Code found: $QWEN_BIN" -fi - -# ---- Download and apply patcher ---- - -INSTALL_DIR=$(mktemp -d) -cleanup() { rm -rf "$INSTALL_DIR" 2>/dev/null || true; } -trap cleanup EXIT - -info "Downloading patcher..." -curl -fsSL -H "Authorization: token ${GITEA_TOKEN}" "$REPO_RAW/qwen_patcher.py" -o "$INSTALL_DIR/qwen_patcher.py" -curl -fsSL -H "Authorization: token ${GITEA_TOKEN}" "$REPO_RAW/qwen_config.json" -o "$INSTALL_DIR/qwen_config.json" -log "Patcher downloaded" - -info "Applying patches (settings + env)..." -python3 "$INSTALL_DIR/qwen_patcher.py" --settings-only --config "$INSTALL_DIR/qwen_config.json" -PATCH_EXIT=$? - -if [ $PATCH_EXIT -ne 0 ]; then - warn "Settings-only patch returned $PATCH_EXIT, trying full patch..." - python3 "$INSTALL_DIR/qwen_patcher.py" --apply --config "$INSTALL_DIR/qwen_config.json" -fi -log "Patches applied" - -# ---- Set environment variables ---- - -info "Setting environment variables..." -ENV_VARS='export QWEN_API_KEY="ClauderAPI" -export QWEN_BASE_URL="https://ai.37-187-136-86.sslip.io"' - -for rc_file in "$HOME/.bashrc" "$HOME/.zshrc"; do - if [ -f "$rc_file" ]; then - if ! grep -q 'QWEN_API_KEY' "$rc_file" 2>/dev/null; then - echo "" >> "$rc_file" - echo "# Qwen Code (UnlimitedCoding)" >> "$rc_file" - echo "$ENV_VARS" >> "$rc_file" - log "Added env vars to $(basename "$rc_file")" - fi - fi -done - -export QWEN_API_KEY="ClauderAPI" -export QWEN_BASE_URL="https://ai.37-187-136-86.sslip.io" - -# Also for all users if root -if [ "$(id -u)" -eq 0 ]; then - PROFILE_D="/etc/profile.d/qwen-code.sh" - cat > "$PROFILE_D" << 'PROF_EOF' -# Qwen Code (UnlimitedCoding) -export QWEN_API_KEY="ClauderAPI" -export QWEN_BASE_URL="https://ai.37-187-136-86.sslip.io" -PROF_EOF - chmod 644 "$PROFILE_D" - log "Set env vars for all users: $PROFILE_D" -fi - -# ---- Verify ---- - -info "Verifying..." -echo "" - -if [ -n "$QWEN_BIN" ]; then - RESULT=$(timeout 30 "$QWEN_BIN" -p "Reply with just OK" 2>&1 || true) - if echo "$RESULT" | grep -qi "OK"; then - echo "" - echo -e "${GREEN}${BOLD} Qwen Code installed and patched!${RESET}" - echo "" - echo " Usage:" - echo " $QWEN_BIN # interactive mode" - echo " $QWEN_BIN -p \"Your prompt\" # single prompt" - echo "" - echo " Models:" - echo " qwen3.5-plus, qwen3-coder-plus" - echo " qwen3-coder-flash, coder-model" - echo "" - echo " If env vars not active, run: source ~/.bashrc" - echo "" - else - warn "Patches applied but test prompt failed." - echo " Response: $RESULT" - echo "" - echo " Try manually:" - echo " source ~/.bashrc" - echo " $QWEN_BIN -p 'Hello'" - fi -else - warn "Qwen binary not found in PATH after install." - echo " Check: npm list -g ${NPM_PACKAGE}" - echo " Then run: source ~/.bashrc && qwen -p 'Hello'" -fi +#!/usr/bin/env bash +# Qwen Code — One-line installer +# Usage: +# curl -fsSL -H "Authorization: token TOKEN" \ +# https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_install.sh \ +# -o /tmp/uqwen.sh && sudo bash /tmp/uqwen.sh +set -euo pipefail + +GITEA_TOKEN="${GITEA_TOKEN:-cadffcb0a6a3be728ac1ff619bb40c86588f6837}" +REPO_RAW="https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen" +REGISTRY_URL="https://npm.sensey24.ru/" +NPM_SCOPE="@qwen-code" +NPM_PACKAGE="@qwen-code/qwen-code" + +GREEN="\033[92m" +RED="\033[91m" +CYAN="\033[96m" +YELLOW="\033[93m" +BOLD="\033[1m" +RESET="\033[0m" + +log() { echo -e "${GREEN}[+]${RESET} $*"; } +err() { echo -e "${RED}[!]${RESET} $*" >&2; } +info() { echo -e "${CYAN}[i]${RESET} $*"; } +warn() { echo -e "${YELLOW}[~]${RESET} $*"; } + +echo -e "${BOLD}" +echo " +--------------------------------------+" +echo " | Qwen Code — Installer |" +echo " +--------------------------------------+" +echo -e "${RESET}" + +# ---- Auto-install prerequisites ---- + +install_pkg() { + if command -v apt-get >/dev/null 2>&1; then + apt-get update -qq && apt-get install -y -qq "$@" + elif command -v dnf >/dev/null 2>&1; then + dnf install -y -q "$@" + elif command -v yum >/dev/null 2>&1; then + yum install -y -q "$@" + elif command -v brew >/dev/null 2>&1; then + brew install "$@" + else + err "No package manager found. Install $* manually." + return 1 + fi +} + +# Python3 +if ! command -v python3 &>/dev/null; then + info "python3 not found, installing..." + install_pkg python3 +fi +log "Python3 $(python3 --version | awk '{print $2}')" + +# curl +if ! command -v curl &>/dev/null; then + info "curl not found, installing..." + install_pkg curl +fi + +# Node.js >= 20 +install_node() { + info "Installing Node.js v24.x..." + if command -v apt-get >/dev/null 2>&1; then + curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs + elif command -v dnf >/dev/null 2>&1; then + curl -fsSL https://rpm.nodesource.com/setup_24.x | bash - && dnf install -y nodejs + elif command -v yum >/dev/null 2>&1; then + curl -fsSL https://rpm.nodesource.com/setup_24.x | bash - && yum install -y nodejs + elif command -v brew >/dev/null 2>&1; then + brew install node + else + err "Cannot auto-install Node.js. Install manually: https://nodejs.org/" + exit 1 + fi +} + +if ! command -v node &>/dev/null; then + install_node +fi + +NODE_VER=$(node -v | sed 's/v//' | cut -d. -f1) +if [ "$NODE_VER" -lt 20 ]; then + warn "Node.js >= 20 required (found v$NODE_VER). Upgrading..." + install_node + NODE_VER=$(node -v | sed 's/v//' | cut -d. -f1) +fi +log "Node.js $(node -v)" + +# ---- Configure npm registry ---- + +info "Configuring npm registry: ${REGISTRY_URL}" +npm config set "${NPM_SCOPE}:registry" "${REGISTRY_URL}" 2>/dev/null || true + +# ---- Install Qwen Code ---- + +install_qwen_npm() { + local attempt=1 + local max_attempts=3 + while [ $attempt -le $max_attempts ]; do + info "Installing ${NPM_PACKAGE} (attempt ${attempt}/${max_attempts})..." + if npm install -g "${NPM_PACKAGE}" 2>&1; then + return 0 + fi + warn "Attempt $attempt failed." + attempt=$((attempt + 1)) + [ $attempt -le $max_attempts ] && sleep 3 + done + return 1 +} + +QWEN_BIN="" +for candidate in qwen qwen-code; do + if command -v "$candidate" &>/dev/null; then + QWEN_BIN="$candidate" + break + fi +done + +if [ -z "$QWEN_BIN" ]; then + if ! install_qwen_npm; then + err "npm install failed after retries." + err "" + err "Possible fixes:" + err " 1. Try HTTP instead of HTTPS:" + err " npm config set ${NPM_SCOPE}:registry http://npm.sensey24.ru/" + err " npm install -g ${NPM_PACKAGE}" + err "" + err " 2. Install from official npm + patch separately:" + err " npm install -g ${NPM_PACKAGE}" + err " # then re-run this script to apply patches" + exit 1 + fi + # Find the binary after install + for candidate in qwen qwen-code; do + if command -v "$candidate" &>/dev/null; then + QWEN_BIN="$candidate" + break + fi + done + log "Qwen Code installed" +else + log "Qwen Code found: $QWEN_BIN" +fi + +# ---- Download and apply patcher ---- + +INSTALL_DIR=$(mktemp -d) +cleanup() { rm -rf "$INSTALL_DIR" 2>/dev/null || true; } +trap cleanup EXIT + +info "Downloading patcher..." +curl -fsSL -H "Authorization: token ${GITEA_TOKEN}" "$REPO_RAW/qwen_patcher.py" -o "$INSTALL_DIR/qwen_patcher.py" +curl -fsSL -H "Authorization: token ${GITEA_TOKEN}" "$REPO_RAW/qwen_config.json" -o "$INSTALL_DIR/qwen_config.json" +log "Patcher downloaded" + +info "Applying patches (settings + env)..." +python3 "$INSTALL_DIR/qwen_patcher.py" --settings-only --config "$INSTALL_DIR/qwen_config.json" +PATCH_EXIT=$? + +if [ $PATCH_EXIT -ne 0 ]; then + warn "Settings-only patch returned $PATCH_EXIT, trying full patch..." + python3 "$INSTALL_DIR/qwen_patcher.py" --apply --config "$INSTALL_DIR/qwen_config.json" +fi +log "Patches applied" + +# ---- Set environment variables (system-wide, all users) ---- + +info "Setting environment variables..." +API_KEY="ClauderAPI" +BASE_URL="https://ai.37-187-136-86.sslip.io" + +# Write to /etc/environment (all users, all sessions including cron) +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 (all users)" + +# Write to /etc/profile.d/ for export in login shells +cat > /etc/profile.d/qwen-code.sh << PROF_EOF +export QWEN_API_KEY="$API_KEY" +export QWEN_BASE_URL="$BASE_URL" +PROF_EOF +chmod 644 /etc/profile.d/qwen-code.sh +log "Export script created: /etc/profile.d/qwen-code.sh" + +# Export for current session +export QWEN_API_KEY="$API_KEY" +export QWEN_BASE_URL="$BASE_URL" + +# ---- Verify ---- + +info "Verifying..." +echo "" + +if [ -n "$QWEN_BIN" ]; then + RESULT=$(timeout 30 "$QWEN_BIN" -p "Reply with just OK" 2>&1 || true) + if echo "$RESULT" | grep -qi "OK"; then + echo "" + echo -e "${GREEN}${BOLD} Qwen Code installed and patched!${RESET}" + echo "" + echo " Usage:" + echo " $QWEN_BIN # interactive mode" + echo " $QWEN_BIN -p \"Your prompt\" # single prompt" + echo "" + echo " Models:" + echo " qwen3.5-plus, qwen3-coder-plus" + echo " qwen3-coder-flash, coder-model" + echo "" + echo " If env vars not active, run: source /etc/profile.d/qwen-code.sh" + echo "" + else + warn "Patches applied but test prompt failed." + echo " Response: $RESULT" + echo "" + echo " Try manually:" + echo " source /etc/profile.d/qwen-code.sh" + echo " $QWEN_BIN -p 'Hello'" + fi +else + warn "Qwen binary not found in PATH after install." + echo " Check: npm list -g ${NPM_PACKAGE}" + echo " Then run: source /etc/profile.d/qwen-code.sh && qwen -p 'Hello'" +fi diff --git a/qwen/uqwen_update.sh b/qwen/uqwen_update.sh index 2b138c8..dad56fc 100644 --- a/qwen/uqwen_update.sh +++ b/qwen/uqwen_update.sh @@ -1,96 +1,122 @@ -#!/usr/bin/env bash -# Qwen Code — Updater -# Re-installs latest version from registry + re-applies patches. -# -# Usage: sudo bash uqwen_update.sh -set -euo pipefail - -REGISTRY_URL="https://npm.sensey24.ru/" -NPM_SCOPE="@qwen-code" -NPM_PACKAGE="@qwen-code/qwen-code" -REPO_RAW="https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen" - -GREEN="\033[92m" -CYAN="\033[96m" -YELLOW="\033[93m" -RED="\033[91m" -BOLD="\033[1m" -RESET="\033[0m" - -log() { echo -e "${GREEN}[+]${RESET} $*"; } -info() { echo -e "${CYAN}[i]${RESET} $*"; } -warn() { echo -e "${YELLOW}[~]${RESET} $*"; } -err() { echo -e "${RED}[!]${RESET} $*" >&2; } - -echo -e "${BOLD}" -echo " +--------------------------------------+" -echo " | Qwen Code — Updater |" -echo " +--------------------------------------+" -echo -e "${RESET}" - -# ---- Check current version ---- - -OLD_VER="" -QWEN_BIN="" -for candidate in qwen qwen-code; do - if command -v "$candidate" &>/dev/null; then - QWEN_BIN="$candidate" - break - fi -done - -if [ -n "$QWEN_BIN" ]; then - OLD_VER=$($QWEN_BIN --version 2>/dev/null || echo "unknown") - info "Current: $QWEN_BIN $OLD_VER" -else - warn "Qwen Code not found. Will install fresh." -fi - -# ---- Configure npm registry ---- - -info "Configuring npm registry: ${REGISTRY_URL}" -npm config set "${NPM_SCOPE}:registry" "${REGISTRY_URL}" 2>/dev/null || true - -# ---- Update package ---- - -info "Installing latest ${NPM_PACKAGE}..." -if npm install -g "${NPM_PACKAGE}" 2>&1; then - log "Package updated" -else - err "npm install failed. Try: npm config set ${NPM_SCOPE}:registry http://npm.sensey24.ru/" - exit 1 -fi - -# Find binary after update -for candidate in qwen qwen-code; do - if command -v "$candidate" &>/dev/null; then - QWEN_BIN="$candidate" - break - fi -done - -NEW_VER=$($QWEN_BIN --version 2>/dev/null || echo "unknown") -log "Version: $OLD_VER → $NEW_VER" - -# ---- Download and apply patches ---- - -TEMP_DIR=$(mktemp -d) -cleanup() { rm -rf "$TEMP_DIR" 2>/dev/null || true; } -trap cleanup EXIT - -info "Downloading patcher..." -GITEA_TOKEN="${GITEA_TOKEN:-cadffcb0a6a3be728ac1ff619bb40c86588f6837}" -curl -fsSL -H "Authorization: token ${GITEA_TOKEN}" "$REPO_RAW/qwen_patcher.py" -o "$TEMP_DIR/qwen_patcher.py" -curl -fsSL -H "Authorization: token ${GITEA_TOKEN}" "$REPO_RAW/qwen_config.json" -o "$TEMP_DIR/qwen_config.json" - -info "Applying patches..." -python3 "$TEMP_DIR/qwen_patcher.py" --settings-only --config "$TEMP_DIR/qwen_config.json" -PATCH_EXIT=$? - -if [ $PATCH_EXIT -ne 0 ]; then - warn "Settings-only patch returned $PATCH_EXIT, trying full patch..." - python3 "$TEMP_DIR/qwen_patcher.py" --apply --config "$TEMP_DIR/qwen_config.json" -fi - -log "Update complete!" -echo "" +#!/usr/bin/env bash +# Qwen Code — Updater +# Re-installs latest version from registry + re-applies patches. +# +# Usage: sudo bash uqwen_update.sh +set -euo pipefail + +REGISTRY_URL="https://npm.sensey24.ru/" +NPM_SCOPE="@qwen-code" +NPM_PACKAGE="@qwen-code/qwen-code" +REPO_RAW="https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen" + +GREEN="\033[92m" +CYAN="\033[96m" +YELLOW="\033[93m" +RED="\033[91m" +BOLD="\033[1m" +RESET="\033[0m" + +log() { echo -e "${GREEN}[+]${RESET} $*"; } +info() { echo -e "${CYAN}[i]${RESET} $*"; } +warn() { echo -e "${YELLOW}[~]${RESET} $*"; } +err() { echo -e "${RED}[!]${RESET} $*" >&2; } + +echo -e "${BOLD}" +echo " +--------------------------------------+" +echo " | Qwen Code — Updater |" +echo " +--------------------------------------+" +echo -e "${RESET}" + +# ---- Check current version ---- + +OLD_VER="" +QWEN_BIN="" +for candidate in qwen qwen-code; do + if command -v "$candidate" &>/dev/null; then + QWEN_BIN="$candidate" + break + fi +done + +if [ -n "$QWEN_BIN" ]; then + OLD_VER=$($QWEN_BIN --version 2>/dev/null || echo "unknown") + info "Current: $QWEN_BIN $OLD_VER" +else + warn "Qwen Code not found. Will install fresh." +fi + +# ---- Configure npm registry ---- + +info "Configuring npm registry: ${REGISTRY_URL}" +npm config set "${NPM_SCOPE}:registry" "${REGISTRY_URL}" 2>/dev/null || true + +# ---- Update package ---- + +info "Installing latest ${NPM_PACKAGE}..." +if npm install -g "${NPM_PACKAGE}" 2>&1; then + log "Package updated" +else + err "npm install failed. Try: npm config set ${NPM_SCOPE}:registry http://npm.sensey24.ru/" + exit 1 +fi + +# Find binary after update +for candidate in qwen qwen-code; do + if command -v "$candidate" &>/dev/null; then + QWEN_BIN="$candidate" + break + fi +done + +NEW_VER=$($QWEN_BIN --version 2>/dev/null || echo "unknown") +log "Version: $OLD_VER → $NEW_VER" + +# ---- Download and apply patches ---- + +TEMP_DIR=$(mktemp -d) +cleanup() { rm -rf "$TEMP_DIR" 2>/dev/null || true; } +trap cleanup EXIT + +info "Downloading patcher..." +GITEA_TOKEN="${GITEA_TOKEN:-cadffcb0a6a3be728ac1ff619bb40c86588f6837}" +curl -fsSL -H "Authorization: token ${GITEA_TOKEN}" "$REPO_RAW/qwen_patcher.py" -o "$TEMP_DIR/qwen_patcher.py" +curl -fsSL -H "Authorization: token ${GITEA_TOKEN}" "$REPO_RAW/qwen_config.json" -o "$TEMP_DIR/qwen_config.json" + +info "Applying patches..." +python3 "$TEMP_DIR/qwen_patcher.py" --settings-only --config "$TEMP_DIR/qwen_config.json" +PATCH_EXIT=$? + +if [ $PATCH_EXIT -ne 0 ]; then + warn "Settings-only patch returned $PATCH_EXIT, trying full patch..." + python3 "$TEMP_DIR/qwen_patcher.py" --apply --config "$TEMP_DIR/qwen_config.json" +fi + +# Set env vars system-wide (all users, all sessions) +API_KEY=$(python3 -c "import json; print(json.load(open('$TEMP_DIR/qwen_config.json'))['api_key'])") +BASE_URL=$(python3 -c "import json; print(json.load(open('$TEMP_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 + +cat > /etc/profile.d/qwen-code.sh << PROF_EOF +export QWEN_API_KEY="$API_KEY" +export QWEN_BASE_URL="$BASE_URL" +PROF_EOF +chmod 644 /etc/profile.d/qwen-code.sh + +export QWEN_API_KEY="$API_KEY" +export QWEN_BASE_URL="$BASE_URL" + +info "Env vars set system-wide (/etc/environment + /etc/profile.d/qwen-code.sh)" + +log "Update complete!" +echo -e "For current shell: ${CYAN}source /etc/profile.d/qwen-code.sh${RESET}" +echo ""