56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
# if the script ends with exit code 0, then no tests are run further, else all tests are run
|
|
import os
|
|
import re
|
|
import shlex
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def get_output(command, shell=True):
|
|
print(command)
|
|
command = shlex.split(command)
|
|
return subprocess.check_output(command, shell=shell, encoding="utf8").strip()
|
|
|
|
def is_py(file):
|
|
return file.endswith("py")
|
|
|
|
def is_js(file):
|
|
return file.endswith("js")
|
|
|
|
def is_docs(file):
|
|
regex = re.compile('\.(md|png|jpg|jpeg)$|^.github|LICENSE')
|
|
return bool(regex.search(file))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
build_type = os.environ.get("TYPE")
|
|
before = os.environ.get("BEFORE")
|
|
after = os.environ.get("AFTER")
|
|
commit_range = before + '...' + after
|
|
print("Build Type: {}".format(build_type))
|
|
print("Commit Range: {}".format(commit_range))
|
|
|
|
try:
|
|
files_changed = get_output("git diff --name-only {}".format(commit_range), shell=False)
|
|
except Exception:
|
|
sys.exit(2)
|
|
|
|
if "fatal" not in files_changed:
|
|
files_list = files_changed.split()
|
|
only_docs_changed = len(list(filter(is_docs, files_list))) == len(files_list)
|
|
only_js_changed = len(list(filter(is_js, files_list))) == len(files_list)
|
|
only_py_changed = len(list(filter(is_py, files_list))) == len(files_list)
|
|
|
|
if only_docs_changed:
|
|
print("Only docs were updated, stopping build process.")
|
|
sys.exit(0)
|
|
|
|
if only_js_changed and build_type == "server":
|
|
print("Only JavaScript code was updated; Stopping Python build process.")
|
|
sys.exit(0)
|
|
|
|
if only_py_changed and build_type == "ui":
|
|
print("Only Python code was updated, stopping Cypress build process.")
|
|
sys.exit(0)
|
|
|
|
sys.exit(2)
|