#!/usr/bin/env python3 import os, sys, subprocess, shutil, tempfile os.chdir (os.path.dirname (__file__)) if len (sys.argv) < 2: ragel_sources = [x for x in os.listdir ('.') if x.endswith ('.rl')] else: ragel_sources = sys.argv[2:] ragel = shutil.which ('ragel') if not ragel: print ('You have to install ragel if you are going to develop HarfBuzz itself') exit (1) if not len (ragel_sources): exit (77) tempdir = tempfile.mkdtemp () for rl in ragel_sources: hh = rl.replace ('.rl', '.hh') shutil.copy (rl, tempdir) # writing to stdout has some complication on Windows subprocess.Popen ([ragel, '-e', '-F1', '-o', hh, rl], cwd=tempdir).wait () generated_path = os.path.join (tempdir, hh) with open (generated_path, "rb") as temp_file: generated = temp_file.read() with open (hh, "rb") as current_file: current = current_file.read() # overwrite only if is changed if generated != current: shutil.copyfile (generated_path, hh) shutil.rmtree (tempdir)