diff options
author | dimdim11 <dimdim11@yandex-team.com> | 2024-03-28 09:05:38 +0300 |
---|---|---|
committer | dimdim11 <dimdim11@yandex-team.com> | 2024-03-28 09:17:05 +0300 |
commit | f828a2a3fec6993c8ab442ede0fd5f4a617a78f2 (patch) | |
tree | 77c27c731f036840d858c9dcf2f97a88eced1b3b /build/scripts/re_replace.py | |
parent | 756c9e6e6908cb030ae418a0180e59e332bf1364 (diff) | |
download | ydb-f828a2a3fec6993c8ab442ede0fd5f4a617a78f2.tar.gz |
Add vanilla_protobuf attribute and logic in cmake generator (patch by python)
Add vanilla_protobuf attribute and logic in cmake generator
0801b280e74126103f91b5cccf0fb16bdfddc492
Diffstat (limited to 'build/scripts/re_replace.py')
-rw-r--r-- | build/scripts/re_replace.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/build/scripts/re_replace.py b/build/scripts/re_replace.py new file mode 100644 index 0000000000..02937103bc --- /dev/null +++ b/build/scripts/re_replace.py @@ -0,0 +1,46 @@ +import sys +import argparse +import re + +# Usage: re_replace.py --from-re <REGEXP> --to-re <REGEXP_REPLACE> FILE [FILE ...] + + +def patch_line(line: str, from_re: re.Pattern, to_re: str) -> str: + return re.sub(from_re, to_re, line) + + +def main(args: list[str]): + argparser = argparse.ArgumentParser(allow_abbrev=False) + argparser.add_argument('--from-re', required=True) + argparser.add_argument('--to-re', required=True) + parsed_args, files = argparser.parse_known_args(args=args) + from_re = re.compile(parsed_args.from_re) + if not files: + raise Exception('No input files') + + patched_files = [] + skipped_files = [] + for file in files: + patched = False + with open(file, 'r') as f: + lines = f.readlines() + for i in range(len(lines)): + line = lines[i] + patched_line = patch_line(line, from_re, parsed_args.to_re) + if patched_line != line: + patched = True + lines[i] = patched_line + if patched: + with open(file, 'w') as f: + f.writelines(lines) + patched_files.append(file) + else: + skipped_files.append(file) + if patched_files: + print("Patched by re_replace: " + ", ".join(patched_files)) + if skipped_files: + print("Skipped by re_replace: " + ", ".join(skipped_files)) + + +if __name__ == '__main__': + main(sys.argv[1:]) |