init: init proj
This commit is contained in:
139
cc-env-from-profiles.sh
Executable file
139
cc-env-from-profiles.sh
Executable file
@@ -0,0 +1,139 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 轻量版 Claude Code 环境变量部署脚本(基于 profiles.json)
|
||||
# 要求:
|
||||
# 1) 读取 profiles.json 展示可选列表
|
||||
# 2) 选择后按照 env-deploy.sh 的参数写入:ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN(空)
|
||||
# 3) 略去不必要的环境检查,假定环境完备(含 jq、node 可用)
|
||||
# 4) 使用 Node 调用 /Users/kid/.claude/cc-aicodemirror-statusline-plus/save-cookie.js 传入所选 profile 的 cookie
|
||||
|
||||
set -e
|
||||
|
||||
BLUE='\033[0;34m'
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[1;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROFILES_JSON="$SCRIPT_DIR/profiles.json"
|
||||
ANTHROPIC_BASE_URL="https://api.aicodemirror.com/api/claudecode"
|
||||
|
||||
echo -e "\n${BLUE}========================================${NC}"
|
||||
echo -e "${BLUE}Claude Code Profile 部署${NC}"
|
||||
echo -e "${BLUE}========================================${NC}\n"
|
||||
|
||||
# 读取 profiles.json 并展示列表
|
||||
if [ ! -f "$PROFILES_JSON" ]; then
|
||||
echo -e "${RED}[ERROR]${NC} 未找到 profiles.json:$PROFILES_JSON"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
COUNT=$(jq '.profiles | length' "$PROFILES_JSON")
|
||||
if [ "$COUNT" -eq 0 ]; then
|
||||
echo -e "${RED}[ERROR]${NC} profiles.json 中未找到任何 profiles"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "可用的 Profiles:"
|
||||
for ((i=0; i<COUNT; i++)); do
|
||||
NAME=$(jq -r ".profiles[$i].name" "$PROFILES_JSON")
|
||||
echo "[$((i+1))] $NAME"
|
||||
done
|
||||
|
||||
echo
|
||||
read -r -p "请输入要使用的编号: " CHOICE
|
||||
|
||||
if ! [[ "$CHOICE" =~ ^[0-9]+$ ]]; then
|
||||
echo -e "${RED}[ERROR]${NC} 请输入有效的数字编号"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
INDEX=$((CHOICE-1))
|
||||
if [ "$INDEX" -lt 0 ] || [ "$INDEX" -ge "$COUNT" ]; then
|
||||
echo -e "${RED}[ERROR]${NC} 编号超出范围"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SELECTED_NAME=$(jq -r ".profiles[$INDEX].name" "$PROFILES_JSON")
|
||||
API_KEY=$(jq -r ".profiles[$INDEX].api_key" "$PROFILES_JSON")
|
||||
COOKIE=$(jq -r ".profiles[$INDEX].cookie" "$PROFILES_JSON")
|
||||
|
||||
echo -e "\n选择的 Profile:${GREEN}$SELECTED_NAME${NC}"
|
||||
|
||||
# 简化版 shell 与配置文件定位(假定环境完备)
|
||||
CURRENT_SHELL=$(basename "$SHELL")
|
||||
case "$CURRENT_SHELL" in
|
||||
bash)
|
||||
if [[ "$OSTYPE" == darwin* ]]; then CONFIG_FILE="$HOME/.bash_profile"; else CONFIG_FILE="$HOME/.bashrc"; fi
|
||||
;;
|
||||
zsh)
|
||||
CONFIG_FILE="$HOME/.zshrc"
|
||||
;;
|
||||
fish)
|
||||
CONFIG_FILE="$HOME/.config/fish/config.fish"
|
||||
;;
|
||||
*)
|
||||
# 默认写入 zshrc,避免中断
|
||||
CONFIG_FILE="$HOME/.zshrc"
|
||||
;;
|
||||
esac
|
||||
|
||||
# 清理旧的环境变量配置(最小化处理)
|
||||
if [ -f "$CONFIG_FILE" ]; then
|
||||
if [[ "$CURRENT_SHELL" == "fish" ]]; then
|
||||
sed -i.tmp -E '/^[[:space:]]*set[[:space:]]+-x[[:space:]]+ANTHROPIC_BASE_URL/d' "$CONFIG_FILE" 2>/dev/null || true
|
||||
sed -i.tmp -E '/^[[:space:]]*set[[:space:]]+-x[[:space:]]+ANTHROPIC_API_KEY/d' "$CONFIG_FILE" 2>/dev/null || true
|
||||
sed -i.tmp -E '/^[[:space:]]*set[[:space:]]+-x[[:space:]]+ANTHROPIC_AUTH_TOKEN/d' "$CONFIG_FILE" 2>/dev/null || true
|
||||
else
|
||||
sed -i.tmp -E '/^[[:space:]]*export[[:space:]]+ANTHROPIC_BASE_URL=/d' "$CONFIG_FILE" 2>/dev/null || true
|
||||
sed -i.tmp -E '/^[[:space:]]*export[[:space:]]+ANTHROPIC_API_KEY=/d' "$CONFIG_FILE" 2>/dev/null || true
|
||||
sed -i.tmp -E '/^[[:space:]]*export[[:space:]]+ANTHROPIC_AUTH_TOKEN=/d' "$CONFIG_FILE" 2>/dev/null || true
|
||||
fi
|
||||
rm -f "$CONFIG_FILE.tmp" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 追加新配置
|
||||
if [[ "$CURRENT_SHELL" == "fish" ]]; then
|
||||
cat >> "$CONFIG_FILE" << EOF
|
||||
|
||||
# Claude Code Environment Variables (auto from profiles)
|
||||
set -x ANTHROPIC_BASE_URL "$ANTHROPIC_BASE_URL"
|
||||
set -x ANTHROPIC_API_KEY "$API_KEY"
|
||||
set -x ANTHROPIC_AUTH_TOKEN ""
|
||||
# End Claude Code Environment Variables
|
||||
EOF
|
||||
else
|
||||
cat >> "$CONFIG_FILE" << EOF
|
||||
|
||||
# Claude Code Environment Variables (auto from profiles)
|
||||
export ANTHROPIC_BASE_URL="$ANTHROPIC_BASE_URL"
|
||||
export ANTHROPIC_API_KEY="$API_KEY"
|
||||
export ANTHROPIC_AUTH_TOKEN=""
|
||||
# End Claude Code Environment Variables
|
||||
EOF
|
||||
fi
|
||||
|
||||
# 立刻在当前会话导出
|
||||
export ANTHROPIC_BASE_URL="$ANTHROPIC_BASE_URL"
|
||||
export ANTHROPIC_API_KEY="$API_KEY"
|
||||
export ANTHROPIC_AUTH_TOKEN=""
|
||||
|
||||
echo -e "${GREEN}[OK]${NC} 已写入并激活环境变量:"
|
||||
echo "ANTHROPIC_BASE_URL=$ANTHROPIC_BASE_URL"
|
||||
echo "ANTHROPIC_API_KEY=****${API_KEY: -4}"
|
||||
echo "ANTHROPIC_AUTH_TOKEN=\"\""
|
||||
|
||||
# 调用 Node 脚本保存 cookie
|
||||
NODE_SCRIPT="/Users/kid/.claude/cc-aicodemirror-statusline-plus/save-cookie.js"
|
||||
if [ -f "$NODE_SCRIPT" ]; then
|
||||
node "$NODE_SCRIPT" "$COOKIE"
|
||||
echo -e "${GREEN}[OK]${NC} 已调用 Node 保存 cookie"
|
||||
else
|
||||
echo -e "${RED}[WARN]${NC} 未找到 Node 脚本:$NODE_SCRIPT,跳过保存 cookie"
|
||||
fi
|
||||
|
||||
echo -e "\n${GREEN}完成!${NC} 新开终端会话即生效,或运行:source \"$CONFIG_FILE\""
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user