mirror of
https://github.com/NaiboWang/EasySpider.git
synced 2026-08-28 23:20:41 +08:00
75 lines
2.7 KiB
Python
75 lines
2.7 KiB
Python
"""Update the version in all source and packaging metadata files.
|
|
|
|
Run this script from any directory, for example::
|
|
|
|
python ElectronJS/change_version.py 0.6.5
|
|
"""
|
|
|
|
import argparse
|
|
import json
|
|
import re
|
|
from pathlib import Path
|
|
|
|
|
|
VERSION_RE = re.compile(r"^\d+\.\d+\.\d+$")
|
|
ROOT = Path(__file__).resolve().parent
|
|
|
|
|
|
def _read_text(path):
|
|
with path.open("r", encoding="utf-8", newline="") as file:
|
|
return file.read()
|
|
|
|
|
|
def _write_text(path, text):
|
|
with path.open("w", encoding="utf-8", newline="") as file:
|
|
file.write(text)
|
|
|
|
|
|
def update_text_file(path, prefix, version):
|
|
text = _read_text(path)
|
|
pattern = re.escape(prefix) + r"\d+\.\d+\.\d+"
|
|
updated, count = re.subn(pattern, prefix + version, text)
|
|
if count == 0:
|
|
raise ValueError(f"Version marker not found in {path}: {prefix}")
|
|
_write_text(path, updated)
|
|
|
|
|
|
def update_json_file(path, version, update_forge_app_version=False):
|
|
original = _read_text(path)
|
|
data = json.loads(original)
|
|
data["version"] = version
|
|
if isinstance(data.get("packages"), dict) and "" in data["packages"]:
|
|
data["packages"][""]["version"] = version
|
|
if update_forge_app_version:
|
|
data["config"]["forge"]["packagerConfig"]["appVersion"] = version
|
|
newline = "\r\n" if "\r\n" in original else "\n"
|
|
_write_text(path, json.dumps(data, indent=4, ensure_ascii=False) + newline)
|
|
|
|
|
|
def update_version(version):
|
|
update_text_file(ROOT.parent / ".temp_to_pub" / "compress.py", 'easyspider_version = "', version)
|
|
update_text_file(ROOT / "src" / "taskGrid" / "logic.js", '"version": "', version)
|
|
update_text_file(ROOT.parent / "ExecuteStage" / "easyspider_executestage.py", '"version": "', version)
|
|
update_text_file(ROOT / "src" / "index.html", "软件当前版本:<b>v", version)
|
|
update_text_file(ROOT / "src" / "index.html", "Current Version: <b>v", version)
|
|
|
|
update_json_file(ROOT / "package.json", version, update_forge_app_version=True)
|
|
update_json_file(ROOT / "package-lock.json", version)
|
|
update_json_file(ROOT.parent / "Extension" / "manifest_v3" / "package.json", version)
|
|
update_json_file(ROOT.parent / "Extension" / "manifest_v3" / "package-lock.json", version)
|
|
update_json_file(ROOT.parent / "Extension" / "manifest_v3" / "src" / "manifest.json", version)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument("version", help="new semantic version, for example 0.6.5")
|
|
args = parser.parse_args()
|
|
if not VERSION_RE.fullmatch(args.version):
|
|
parser.error("version must have the form MAJOR.MINOR.PATCH")
|
|
update_version(args.version)
|
|
print(f"Updated EasySpider version to {args.version}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|