#!/usr/bin/env python3 "This tool is intended to be used from meson" import os, sys, shutil, re if len (sys.argv) < 4: sys.exit(__doc__) version = sys.argv[1] major, minor, micro = version.split (".") OUTPUT = sys.argv[2] INPUT = sys.argv[3] CURRENT_SOURCE_DIR = os.path.dirname(INPUT) try: with open (OUTPUT, "r", encoding='utf-8') as old_output: for line in old_output: old_version = re.match (r"#define HB_VERSION_STRING \"(\d.\d.\d)\"", line) if old_version and old_version[1] == version: sys.exit () except IOError: pass with open (INPUT, "r", encoding='utf-8') as template: with open (OUTPUT, "wb") as output: output.write (template.read () .replace ("@HB_VERSION_MAJOR@", major) .replace ("@HB_VERSION_MINOR@", minor) .replace ("@HB_VERSION_MICRO@", micro) .replace ("@HB_VERSION@", version) .encode ()) # copy it also to the source tree, but only if it has changed baseline_filename = os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT)) with open(baseline_filename, "rb") as baseline: with open(OUTPUT, "rb") as generated: if baseline.read() != generated.read(): shutil.copyfile (OUTPUT, baseline_filename)