| #!/usr/bin/env python3 |
| # SPDX-License-Identifier: Apache-2.0 |
| # Copyright © 2024 Intel Corporation |
| |
| from __future__ import annotations |
| import argparse |
| import typing as T |
| |
| if T.TYPE_CHECKING: |
| class Arguments(T.Protocol): |
| |
| input: str |
| output: str |
| replacements: T.List[T.Tuple[str, str]] |
| |
| |
| def process(txt: str, replacements: T.List[T.Tuple[str, str]]) -> str: |
| for k, v in replacements: |
| txt = txt.replace(k, v) |
| return txt |
| |
| |
| def split_arg(arg: str) -> T.Tuple[str, str]: |
| args = arg.split('=', maxsplit=1) |
| assert len(args) == 2, 'Did not get the right number of args?' |
| return T.cast('T.Tuple[str, str]', tuple(args)) |
| |
| |
| def main() -> None: |
| parser = argparse.ArgumentParser() |
| parser.add_argument('input') |
| parser.add_argument('output') |
| parser.add_argument('--replace', action='append', required=True, dest='replacements', type=split_arg) |
| args = T.cast('Arguments', parser.parse_args()) |
| |
| with open(args.input, 'r', encoding='utf-8') as f: |
| content = f.read() |
| |
| content = process(content, args.replacements) |
| |
| with open(args.output, 'w', encoding='utf-8') as f: |
| f.write(content) |
| |
| if __name__ == "__main__": |
| main() |