vnpy/tools/ci/check_all.py
2019-01-24 09:06:32 -04:00

76 lines
1.5 KiB
Python

"""
check code quality for project
run this file under project root
"""
import logging
import os
import subprocess
from typing import Callable
logger = logging.Logger(__file__)
def check_and_warning(*args, fast_fail: bool = False):
passed = True
for i in args:
if isinstance(i, Callable):
print(f"check using {i}")
cwd = os.getcwd()
res = i()
os.chdir(cwd)
if not res:
passed = False
logger.warning("check of %s failed!", i)
if not passed and fast_fail:
return False
return passed
def check_black():
passed = True
try:
subprocess.check_call(["python", "-m", "black", "--check", "./"])
except subprocess.SubprocessError:
passed = False
return passed
def check_format():
return check_and_warning(check_black)
def check_all():
return check_and_warning(check_format, check_linter)
def check_flake8():
passed = True
try:
subprocess.check_call(["python", "-m", "flake8", "./"])
except subprocess.SubprocessError:
passed = False
return passed
def check_pylint():
passed = True
try:
subprocess.check_call(
["python", "-m", "pylint", "-j", "0", "vnpy", "binding", "tests"]
)
except subprocess.SubprocessError:
passed = False
return passed
def check_linter():
return check_and_warning(check_pylint, check_flake8)
if __name__ == "__main__":
if not check_all():
exit(1)
exit(0)