#!/usr/bin/env python3 import argparse import os import re parser = argparse.ArgumentParser(description="Rename a CMake target. Operates on the current directory.") parser.add_argument("old", help="the target to rename", type=str) parser.add_argument("new", help="the new target name", type=str) args = parser.parse_args() print(args.old) print(args.new) def editfile(f, old, new): contents = f.read() f.seek(0) contents = re.sub("([^\w.])" + old + "([^\w.])", r"\1" + new + r"\2", contents) f.write(contents) f.truncate() for dirpath, dirname, filenames in os.walk("."): for filename in filenames: if filename.endswith("CMakeLists.txt"): with open(dirpath +"/" + filename, "r+") as f: editfile(f, args.old, args.new)