1# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
2#
3# SPDX-License-Identifier: GPL-2.0-or-later
4
5import argparse
6import re
7
8LINE_RE = re.compile(r"^__version__ = ['\"]([^'\"]*)['\"]")
9NEW_LINE = '__version__ = "{}"\n'
10
11
12def patch_file(path, new_version):
13    assert ".dev" in new_version
14    new_version = new_version.lstrip("v")
15
16    with open(path, "r") as fin:
17        lines = fin.readlines()
18
19    for i, line in enumerate(lines, start=0):
20        m = LINE_RE.search(line)
21        if m:
22            lines[i] = NEW_LINE.format(new_version)
23            break
24
25    with open(path, "w") as fout:
26        fout.writelines(lines)
27
28
29def main():
30    parser = argparse.ArgumentParser()
31    parser.add_argument("file", help="Path to script with __version__")
32    parser.add_argument(
33        "--version", help="Development version specifier to patch the version to"
34    )
35    args = parser.parse_args()
36    patch_file(args.file, args.version)
37
38
39if __name__ == "__main__":
40    main()
41