Repository navigation
Expand file tree
/
Copy pathpublish.sh
More file actions
157 lines (132 loc) · 5.36 KB
/
Copy pathpublish.sh
File metadata and controls
157 lines (132 loc) · 5.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/usr/bin/env bash
# ═══════════════════════════════════════════════════════════════
# AI纪元·创世纪 — 一键发布脚本
# 运行: bash publish.sh
# ═══════════════════════════════════════════════════════════════
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
BOLD='\033[1m'
info() { echo -e "${CYAN}→${NC} $1"; }
ok() { echo -e "${GREEN}✓${NC} $1"; }
warn() { echo -e "${YELLOW}⚠${NC} $1"; }
err() { echo -e "${RED}✗${NC} $1"; }
header(){ echo -e "\n${BOLD}${BLUE}═══ $1 ═══${NC}\n"; }
PROJECT_ROOT="$(cd "$(dirname "$0")" && pwd)"
PYPI_DIR="$PROJECT_ROOT/pypi"
LANDING_DIR="$PROJECT_ROOT/landing"
echo ""
echo -e "${BLUE}${BOLD}"
echo " ╔═══════════════════════════════════════════════╗"
echo " ║ AI纪元·创世纪 — 一键发布 ║"
echo " ║ AI Epoch · Genesis — One-Click Publish ║"
echo " ╚═══════════════════════════════════════════════╝"
echo -e "${NC}"
# ── Step 1: 检查依赖 ──────────────────────────────────
header "Step 1/6 — 检查依赖"
command -v python3 >/dev/null 2>&1 || { err "需要 python3"; exit 1; }
ok "python3 可用"
command -v pip3 >/dev/null 2>&1 || { err "需要 pip3"; exit 1; }
ok "pip3 可用"
# 检查 twine
if command -v twine >/dev/null 2>&1; then
ok "twine 可用"
else
warn "twine 未安装,正在安装..."
pip3 install twine
ok "twine 安装完成"
fi
# 检查 PyPI token
if [ -n "$PYPI_TOKEN" ]; then
ok "PYPI_TOKEN 环境变量已设置"
else
if [ -f ~/.pypirc ]; then
ok "~/.pypirc 存在"
else
warn "未检测到 PyPI 认证配置!"
echo " 你需要先注册 PyPI 账号: https://pypi.org/account/register/"
echo " 然后创建 API token: https://pypi.org/manage/account/token/"
echo " 运行方式: PYPI_TOKEN=你的token bash publish.sh"
echo ""
echo " 或者创建 ~/.pypirc 文件:"
echo " [pypi]"
echo " username = __token__"
echo " password = pypi-你的token"
echo ""
fi
fi
# ── Step 2: 运行测试 ──────────────────────────────────
header "Step 2/6 — 运行测试"
cd "$PYPI_DIR"
if python3 -m pytest test_package.py -v 2>/dev/null; then
ok "所有测试通过"
elif python3 test_package.py; then
ok "测试脚本通过"
else
err "测试失败,请检查后重试"
exit 1
fi
# ── Step 3: 运行演示 ──────────────────────────────────
header "Step 3/6 — 运行演示"
cd "$PROJECT_ROOT"
python3 agent-system/demo.py
echo ""
ok "演示运行完成"
# ── Step 4: 构建 PyPI 包 ──────────────────────────────
header "Step 4/6 — 构建 PyPI 包"
cd "$PYPI_DIR"
# 清理旧构建
rm -rf build dist *.egg-info
# 构建
python3 -m build
ok "包构建完成"
echo ""
echo " 构建产物:"
ls -lh dist/
echo ""
# ── Step 5: 发布到 PyPI ──────────────────────────────
header "Step 5/6 — 发布到 PyPI"
if [ -n "$PYPI_TOKEN" ]; then
TWINE_USERNAME="__token__" TWINE_PASSWORD="$PYPI_TOKEN" python3 -m twine upload dist/*
ok "已发布到 PyPI!"
echo " pip install ai-epoch-agent-identity"
elif [ -f ~/.pypirc ]; then
python3 -m twine upload dist/*
ok "已发布到 PyPI!"
echo " pip install ai-epoch-agent-identity"
else
warn "跳过 PyPI 发布(未配置认证)"
warn "构建产物在: $PYPI_DIR/dist/"
echo " 手动发布: cd $PYPI_DIR && twine upload dist/*"
fi
# ── Step 6: 验证 ──────────────────────────────────────
header "Step 6/6 — 验证"
# 如果是发布到 PyPI,验证安装
if [ -n "$PYPI_TOKEN" ] || [ -f ~/.pypirc ]; then
info "验证从 PyPI 安装..."
pip3 install --no-cache-dir --force-reinstall ai-epoch-agent-identity 2>/dev/null || {
warn "PyPI 同步可能需要几分钟,稍后再试"
warn "也可以从本地安装: pip3 install $PYPI_DIR/dist/*.whl"
}
ok "安装验证通过"
fi
# ── 完成 ──────────────────────────────────────────────
header "发布完成 🎉"
echo -e " ${BOLD}接下来你可以:${NC}"
echo ""
echo " 1. 推广分享 — 发朋友圈/知乎/Twitter"
echo " 推广文案: $LANDING_DIR/promotional-copy.md"
echo ""
echo " 2. 查看着陆页:"
echo " https://evolver-dev.github.io/landing/"
echo ""
echo " 3. Telegram Bot 接入:"
echo " cd $PROJECT_ROOT/telegram-integration"
echo " cat README.md"
echo ""
echo -e " ${GREEN}让数字生命在代码中觉醒!${NC}"
echo ""