Initial commit
This commit is contained in:
104
build.py
Normal file
104
build.py
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
RustFS S3 Storage Toolkit 构建和发布脚本
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def run_command(command, description):
|
||||
"""运行命令并显示结果"""
|
||||
print(f"🔧 {description}...")
|
||||
try:
|
||||
result = subprocess.run(command, shell=True, check=True, capture_output=True, text=True)
|
||||
print(f"✅ {description}成功")
|
||||
if result.stdout.strip():
|
||||
print(f"输出: {result.stdout.strip()}")
|
||||
return True
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"❌ {description}失败: {e}")
|
||||
if e.stdout:
|
||||
print(f"输出: {e.stdout}")
|
||||
if e.stderr:
|
||||
print(f"错误: {e.stderr}")
|
||||
return False
|
||||
|
||||
|
||||
def main():
|
||||
"""主构建流程"""
|
||||
print("🚀 RustFS S3 Storage Toolkit 构建脚本")
|
||||
print("=" * 50)
|
||||
|
||||
# 检查当前目录
|
||||
current_dir = Path.cwd()
|
||||
if not (current_dir / "pyproject.toml").exists():
|
||||
print("❌ 请在项目根目录运行此脚本")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"✅ 项目目录: {current_dir}")
|
||||
|
||||
# 清理旧的构建文件
|
||||
print("\n🧹 清理旧的构建文件...")
|
||||
cleanup_commands = [
|
||||
"rm -rf dist/",
|
||||
"rm -rf build/",
|
||||
"rm -rf *.egg-info/",
|
||||
"find . -name '__pycache__' -type d -exec rm -rf {} + 2>/dev/null || true",
|
||||
"find . -name '*.pyc' -delete 2>/dev/null || true"
|
||||
]
|
||||
|
||||
for command in cleanup_commands:
|
||||
subprocess.run(command, shell=True, capture_output=True)
|
||||
|
||||
print("✅ 清理完成")
|
||||
|
||||
# 安装构建依赖
|
||||
build_deps = [
|
||||
"pip install --upgrade pip",
|
||||
"pip install --upgrade build twine"
|
||||
]
|
||||
|
||||
for command in build_deps:
|
||||
if not run_command(command, f"安装构建依赖"):
|
||||
print("❌ 安装构建依赖失败")
|
||||
sys.exit(1)
|
||||
|
||||
# 构建包
|
||||
if not run_command("python -m build", "构建包"):
|
||||
print("❌ 构建失败")
|
||||
sys.exit(1)
|
||||
|
||||
# 检查构建结果
|
||||
dist_dir = current_dir / "dist"
|
||||
if not dist_dir.exists():
|
||||
print("❌ 构建目录不存在")
|
||||
sys.exit(1)
|
||||
|
||||
built_files = list(dist_dir.glob("*"))
|
||||
if not built_files:
|
||||
print("❌ 没有找到构建文件")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"\n📦 构建完成!生成的文件:")
|
||||
for file in built_files:
|
||||
print(f" - {file.name}")
|
||||
|
||||
# 验证包
|
||||
if not run_command("python -m twine check dist/*", "验证包"):
|
||||
print("❌ 包验证失败")
|
||||
sys.exit(1)
|
||||
|
||||
print("\n🎉 构建和验证完成!")
|
||||
print("\n📖 发布到 PyPI:")
|
||||
print("1. 测试发布: python -m twine upload --repository testpypi dist/*")
|
||||
print("2. 正式发布: python -m twine upload dist/*")
|
||||
|
||||
print("\n💡 本地安装测试:")
|
||||
print("pip install dist/*.whl")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user