| #!/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() |