| |
| |
|
|
| import argparse |
| import os |
|
|
| from Cython import Tempita as tempita |
|
|
| |
| |
|
|
|
|
| def process_tempita(fromfile, outfile=None): |
| """Process tempita templated file and write out the result. |
| |
| The template file is expected to end in `.c.tp` or `.pyx.tp`: |
| E.g. processing `template.c.in` generates `template.c`. |
| |
| """ |
| with open(fromfile, "r", encoding="utf-8") as f: |
| template_content = f.read() |
|
|
| template = tempita.Template(template_content) |
| content = template.substitute() |
|
|
| with open(outfile, "w", encoding="utf-8") as f: |
| f.write(content) |
|
|
|
|
| def main(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument("infile", type=str, help="Path to the input file") |
| parser.add_argument("-o", "--outdir", type=str, help="Path to the output directory") |
| parser.add_argument( |
| "-i", |
| "--ignore", |
| type=str, |
| help=( |
| "An ignored input - may be useful to add a " |
| "dependency between custom targets" |
| ), |
| ) |
| args = parser.parse_args() |
|
|
| if not args.infile.endswith(".tp"): |
| raise ValueError(f"Unexpected extension: {args.infile}") |
|
|
| if not args.outdir: |
| raise ValueError("Missing `--outdir` argument to tempita.py") |
|
|
| outdir_abs = os.path.join(os.getcwd(), args.outdir) |
| outfile = os.path.join( |
| outdir_abs, os.path.splitext(os.path.split(args.infile)[1])[0] |
| ) |
|
|
| process_tempita(args.infile, outfile) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|