Skip to content

Commit d04cd8e

Browse files
wangjuntaowangjuntao
authored andcommitted
添加 Makefile 简化开发和发布流程
- 开发命令: install, dev, run-http, run-stdio - 代码质量: lint, format, check, test - 构建发布: clean, build, publish, test-pypi - 实用工具: version, test-uvx, test-install, tag - 完整流程: full-release(自动化发布)
1 parent 4a65a4e commit d04cd8e

1 file changed

Lines changed: 154 additions & 0 deletions

File tree

Makefile

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
.PHONY: help install dev clean build publish test run-http run-stdio lint format check
2+
3+
# 默认目标
4+
help:
5+
@echo "HyperLiquid MCP - 可用命令:"
6+
@echo ""
7+
@echo "开发命令:"
8+
@echo " make install - 安装依赖(uv sync)"
9+
@echo " make dev - 开发模式安装"
10+
@echo " make run-http - 启动 HTTP 服务器"
11+
@echo " make run-stdio - 启动 stdio 服务器"
12+
@echo ""
13+
@echo "代码质量:"
14+
@echo " make lint - 运行代码检查"
15+
@echo " make format - 格式化代码"
16+
@echo " make check - 检查代码但不修改"
17+
@echo " make test - 运行测试"
18+
@echo ""
19+
@echo "构建和发布:"
20+
@echo " make clean - 清理构建文件"
21+
@echo " make build - 构建发布包"
22+
@echo " make publish - 发布到 PyPI"
23+
@echo " make test-pypi - 发布到测试 PyPI"
24+
@echo ""
25+
@echo "快捷命令:"
26+
@echo " make all - clean + build"
27+
@echo " make release - clean + build + publish"
28+
29+
# 安装依赖
30+
install:
31+
uv sync
32+
33+
# 开发模式
34+
dev:
35+
uv sync --all-extras
36+
37+
# 运行 HTTP 服务器
38+
run-http:
39+
uv run hyperliquid-mcp start
40+
41+
# 运行 stdio 服务器
42+
run-stdio:
43+
uv run hyperliquid-mcp stdio
44+
45+
# 代码格式化
46+
format:
47+
uv run black .
48+
uv run isort .
49+
50+
# 代码检查(不修改)
51+
check:
52+
uv run black --check .
53+
uv run isort --check-only .
54+
55+
# 代码检查(带 lint)
56+
lint: check
57+
@echo "✅ 代码检查通过"
58+
59+
# 运行测试
60+
test:
61+
@echo "⚠️ 暂无测试,跳过"
62+
@# uv run pytest
63+
64+
# 清理构建文件
65+
clean:
66+
rm -rf dist/
67+
rm -rf build/
68+
rm -rf *.egg-info
69+
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
70+
find . -type f -name "*.pyc" -delete
71+
find . -type f -name "*.pyo" -delete
72+
@echo "✅ 清理完成"
73+
74+
# 构建发布包
75+
build: clean
76+
uv run python -m build
77+
uv run twine check dist/*
78+
@echo "✅ 构建完成"
79+
@ls -lh dist/
80+
81+
# 发布到测试 PyPI
82+
test-pypi: build
83+
uv run twine upload --repository testpypi dist/*
84+
@echo "✅ 已发布到测试 PyPI"
85+
@echo "查看: https://test.pypi.org/project/hyperliquid-mcp-python/"
86+
87+
# 发布到正式 PyPI
88+
publish: build
89+
@echo "⚠️ 即将发布到正式 PyPI,请确认:"
90+
@echo " 1. 版本号已更新"
91+
@echo " 2. CHANGELOG 已更新"
92+
@echo " 3. 代码已提交到 git"
93+
@read -p "继续?(y/N) " confirm && [ "$$confirm" = "y" ] || (echo "已取消" && exit 1)
94+
uv run twine upload dist/*
95+
@echo "✅ 已发布到 PyPI"
96+
@echo "查看: https://pypi.org/project/hyperliquid-mcp-python/"
97+
98+
# 快捷命令:清理 + 构建
99+
all: clean build
100+
101+
# 快捷命令:完整发布流程
102+
release: clean build publish
103+
104+
# 检查 uv 是否安装
105+
check-uv:
106+
@which uv > /dev/null || (echo "❌ uv 未安装,请访问: https://github.com/astral-sh/uv" && exit 1)
107+
108+
# 显示版本信息
109+
version:
110+
@grep '^version = ' pyproject.toml | cut -d'"' -f2
111+
112+
# 缓存清理
113+
cache-clean:
114+
uv cache clean
115+
@echo "✅ UV 缓存已清理"
116+
117+
# 测试 uvx 安装
118+
test-uvx:
119+
@echo "测试 uvx 安装..."
120+
uvx --python 3.13 --from hyperliquid-mcp-python hyperliquid-mcp --version
121+
122+
# 本地测试安装
123+
test-install: build
124+
@echo "创建测试虚拟环境..."
125+
python3 -m venv /tmp/test-hyperliquid-mcp
126+
/tmp/test-hyperliquid-mcp/bin/pip install dist/*.whl
127+
/tmp/test-hyperliquid-mcp/bin/hyperliquid-mcp --version
128+
rm -rf /tmp/test-hyperliquid-mcp
129+
@echo "✅ 本地安装测试通过"
130+
131+
# Git 标签和推送
132+
tag:
133+
@VERSION=$$(grep '^version = ' pyproject.toml | cut -d'"' -f2) && \
134+
git tag -a "v$$VERSION" -m "Release v$$VERSION" && \
135+
echo "✅ 已创建标签: v$$VERSION" && \
136+
echo "推送标签: git push origin v$$VERSION"
137+
138+
# 完整发布流程(包含 git)
139+
full-release: check-uv
140+
@echo "🚀 开始完整发布流程..."
141+
@$(MAKE) clean
142+
@$(MAKE) build
143+
@$(MAKE) test-install
144+
@VERSION=$$(grep '^version = ' pyproject.toml | cut -d'"' -f2) && \
145+
echo "" && \
146+
echo "准备发布 v$$VERSION" && \
147+
echo "请确认所有更改已提交到 git" && \
148+
read -p "继续?(y/N) " confirm && [ "$$confirm" = "y" ] || (echo "已取消" && exit 1)
149+
@$(MAKE) publish
150+
@$(MAKE) tag
151+
@echo ""
152+
@echo "🎉 发布完成!别忘了:"
153+
@echo " git push origin main"
154+
@echo " git push origin v$$(grep '^version = ' pyproject.toml | cut -d'"' -f2)"

0 commit comments

Comments
 (0)