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