|
| 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