Phasor 2.2.0
Stack VM based Programming Language
Loading...
Searching...
No Matches
Update-ResourceVersion.py
Go to the documentation of this file.
1#!/usr/bin/env python3
2
3import sys
4import re
5from pathlib import Path
6
7
8def dot_to_comma(version: str) -> str:
9 return version.replace('.', ',')
10
11
12def update_resource_version(old_version: str, new_version: str) -> None:
13 app_dir = Path("./App")
14
15 if not app_dir.exists():
16 print(f"Error: Directory '{app_dir}' does not exist")
17 sys.exit(1)
18
19 old_version_comma = dot_to_comma(old_version)
20 new_version_comma = dot_to_comma(new_version)
21
22 old_version_string = f"{old_version}.0"
23 new_version_string = f"{new_version}.0"
24
25 old_version_comma_escaped = re.escape(old_version_comma)
26
27 rc_files = list(app_dir.rglob("*.rc"))
28
29 if not rc_files:
30 print(f"No .rc files found in {app_dir}")
31 return
32
33 files_updated = 0
34 for file_path in rc_files:
35 try:
36 lines = file_path.read_text(encoding='utf-8').splitlines(keepends=True)
37 updated_lines = []
38 file_modified = False
39
40 for line in lines:
41 new_line = line
42 trimmed = line.lstrip()
43
44 if trimmed.startswith("FILEVERSION") and re.search(old_version_comma_escaped, line):
45 new_line = re.sub(old_version_comma_escaped, new_version_comma, line)
46 file_modified = True
47
48 elif trimmed.startswith("PRODUCTVERSION") and re.search(old_version_comma_escaped, line):
49 new_line = re.sub(old_version_comma_escaped, new_version_comma, line)
50 file_modified = True
51
52 elif 'VALUE "FileVersion",' in line:
53 parts = line.split('"')
54 if len(parts) > 3 and parts[3] == old_version_string:
55 parts[3] = new_version_string
56 new_line = '"'.join(parts)
57 file_modified = True
58
59 elif 'VALUE "ProductVersion",' in line:
60 parts = line.split('"')
61 if len(parts) > 3 and parts[3] == old_version_string:
62 parts[3] = new_version_string
63 new_line = '"'.join(parts)
64 file_modified = True
65
66 updated_lines.append(new_line)
67
68 if file_modified:
69 file_path.write_text(''.join(updated_lines), encoding='utf-8')
70 files_updated += 1
71
72 except Exception as e:
73 print(f"Error processing {file_path}: {e}")
74
75 print(f"Updated .rc files from {old_version} to {new_version}")
76 print(f"Files modified: {files_updated}/{len(rc_files)}")
77
78
79def main():
80 if len(sys.argv) != 3:
81 print("Usage: python update_resource_version.py <old version> <new version>")
82 sys.exit(1)
83
84 old_version = sys.argv[1]
85 new_version = sys.argv[2]
86
87 update_resource_version(old_version, new_version)
88
89
90if __name__ == "__main__":
91 main()
None update_resource_version(str old_version, str new_version)