42 lines
1.0 KiB
Python
Executable File
42 lines
1.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
import generate_config_yml
|
|
|
|
|
|
CHECKED_IN_FILE = "config.yml"
|
|
REGENERATION_SCRIPT = "regenerate.sh"
|
|
|
|
PARENT_DIR = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
|
|
README_PATH = os.path.join(PARENT_DIR, "README.md")
|
|
|
|
ERROR_MESSAGE_TEMPLATE = """
|
|
The checked-in CircleCI "%s" file does not match what was generated by the scripts.
|
|
Please re-run the "%s" script in the "%s" directory and commit the result. See "%s" for more information.
|
|
"""
|
|
|
|
|
|
def check_consistency():
|
|
_, temp_filename = tempfile.mkstemp("-generated-config.yml")
|
|
|
|
with open(temp_filename, "w") as fh:
|
|
generate_config_yml.stitch_sources(fh)
|
|
|
|
try:
|
|
subprocess.check_call(["cmp", temp_filename, CHECKED_IN_FILE])
|
|
except subprocess.CalledProcessError:
|
|
sys.exit(
|
|
ERROR_MESSAGE_TEMPLATE
|
|
% (CHECKED_IN_FILE, REGENERATION_SCRIPT, PARENT_DIR, README_PATH)
|
|
)
|
|
finally:
|
|
os.remove(temp_filename)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
check_consistency()
|