更新验证器提价
This commit is contained in:
129
dev.py
Normal file
129
dev.py
Normal file
@@ -0,0 +1,129 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
开发工具脚本 - 提供常用开发命令
|
||||
"""
|
||||
import argparse
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def run_command(cmd: list, cwd: Path = None) -> int:
|
||||
"""运行命令"""
|
||||
print(f"执行: {' '.join(cmd)}")
|
||||
try:
|
||||
return subprocess.run(cmd, cwd=cwd).returncode
|
||||
except Exception as e:
|
||||
print(f"错误: {e}")
|
||||
return 1
|
||||
|
||||
|
||||
def format_code() -> int:
|
||||
"""格式化代码"""
|
||||
from scripts.format_code import main
|
||||
return main()
|
||||
|
||||
|
||||
def run_tests(coverage: bool = False) -> int:
|
||||
"""运行测试"""
|
||||
from scripts.run_tests import run_tests
|
||||
return run_tests(coverage=coverage)
|
||||
|
||||
|
||||
def lint_code() -> int:
|
||||
"""代码检查"""
|
||||
cmds = [
|
||||
[sys.executable, "-m", "flake8", ".", "--max-line-length=100"],
|
||||
[sys.executable, "-m", "pylint", ".", "--max-line-length=100", "--disable=C0111"],
|
||||
]
|
||||
|
||||
for cmd in cmds:
|
||||
if run_command(cmd):
|
||||
print(f"命令失败: {' '.join(cmd)}")
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def type_check() -> int:
|
||||
"""类型检查"""
|
||||
return run_command([
|
||||
sys.executable, "-m", "mypy", ".", "--ignore-missing-imports"
|
||||
])
|
||||
|
||||
|
||||
def build_app() -> int:
|
||||
"""打包应用"""
|
||||
spec_file = Path("ArticleReplace.spec")
|
||||
if spec_file.exists():
|
||||
return run_command([
|
||||
sys.executable, "-m", "PyInstaller",
|
||||
str(spec_file),
|
||||
"--clean"
|
||||
])
|
||||
else:
|
||||
print(f"Spec文件不存在: {spec_file}")
|
||||
return 1
|
||||
|
||||
|
||||
def clean_build() -> int:
|
||||
"""清理构建文件"""
|
||||
dirs_to_remove = ["build", "dist", "__pycache__"]
|
||||
for d in dirs_to_remove:
|
||||
import shutil
|
||||
if Path(d).exists():
|
||||
shutil.rmtree(d)
|
||||
print(f"已删除: {d}")
|
||||
|
||||
import glob
|
||||
for f in glob.glob("*.spec"):
|
||||
Path(f).unlink()
|
||||
print(f"已删除: {f}")
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
parser = argparse.ArgumentParser(description="开发工具")
|
||||
subparsers = parser.add_subparsers(dest="command", help="可用命令")
|
||||
|
||||
# format
|
||||
subparsers.add_parser("format", help="格式化代码")
|
||||
|
||||
# test
|
||||
test_parser = subparsers.add_parser("test", help="运行测试")
|
||||
test_parser.add_argument("--coverage", "-c", action="store_true", help="生成覆盖率报告")
|
||||
|
||||
# lint
|
||||
subparsers.add_parser("lint", help="代码检查")
|
||||
|
||||
# typecheck
|
||||
subparsers.add_parser("typecheck", help="类型检查")
|
||||
|
||||
# build
|
||||
subparsers.add_parser("build", help="打包应用")
|
||||
|
||||
# clean
|
||||
subparsers.add_parser("clean", help="清理构建文件")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.command:
|
||||
parser.print_help()
|
||||
return 0
|
||||
|
||||
commands = {
|
||||
"format": format_code,
|
||||
"test": lambda: run_tests(coverage=getattr(args, 'coverage', False)),
|
||||
"lint": lint_code,
|
||||
"typecheck": type_check,
|
||||
"build": build_app,
|
||||
"clean": clean_build,
|
||||
}
|
||||
|
||||
return commands[args.command]()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user