Spaces:
Running
Running
Download scripts/bump_version.py from 0001AMA/GoldenGreenFC: direct link, hf CLI and curl.
- Browser
- Download file 2.4 kB
-
https://huggingface.co/spaces/0001AMA/GoldenGreenFC/resolve/main/scripts/bump_version.py
- Command line
-
hf download hf://spaces/0001AMA/GoldenGreenFC/scripts/bump_version.py
-
curl -L -o bump_version.py https://huggingface.co/spaces/0001AMA/GoldenGreenFC/resolve/main/scripts/bump_version.py
2.4 kB
| #!/usr/bin/env python3 | |
| """Bump or sync GoldenGreenFC version across VERSION, package.json, README, script.js, index.html.""" | |
| from __future__ import annotations | |
| import argparse | |
| import json | |
| import re | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parents[1] | |
| def read_version() -> str: | |
| return (ROOT / "VERSION").read_text(encoding="utf-8").strip() | |
| def bump(version: str, kind: str) -> str: | |
| major, minor, patch = (int(x) for x in version.split(".")) | |
| if kind == "major": | |
| return f"{major + 1}.0.0" | |
| if kind == "minor": | |
| return f"{major}.{minor + 1}.0" | |
| return f"{major}.{minor}.{patch + 1}" | |
| def write_version(version: str) -> None: | |
| (ROOT / "VERSION").write_text(version + "\n", encoding="utf-8") | |
| pkg_path = ROOT / "package.json" | |
| pkg = json.loads(pkg_path.read_text(encoding="utf-8")) | |
| pkg["version"] = version | |
| pkg_path.write_text(json.dumps(pkg, indent=2) + "\n", encoding="utf-8") | |
| readme = ROOT / "README.md" | |
| text = readme.read_text(encoding="utf-8") | |
| text = re.sub(r"(\*\*Version:\*\*\s*)\d+\.\d+\.\d+", rf"\g<1>{version}", text, count=1) | |
| readme.write_text(text, encoding="utf-8") | |
| script = ROOT / "script.js" | |
| s = script.read_text(encoding="utf-8") | |
| s = re.sub(r'(const VERSION = ")[^"]+(")', rf"\g<1>{version}\g<2>", s, count=1) | |
| script.write_text(s, encoding="utf-8") | |
| index = ROOT / "index.html" | |
| html = index.read_text(encoding="utf-8") | |
| html = re.sub(r"(data-version)>v?\d+\.\d+\.\d+", rf"\1>v{version}", html) | |
| index.write_text(html, encoding="utf-8") | |
| def main() -> None: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument( | |
| "kind", | |
| nargs="?", | |
| default="patch", | |
| choices=("patch", "minor", "major"), | |
| help="Semver bump kind (ignored with --sync-only)", | |
| ) | |
| parser.add_argument( | |
| "--sync-only", | |
| action="store_true", | |
| help="Rewrite versioned files from VERSION without bumping", | |
| ) | |
| parser.add_argument( | |
| "--set", | |
| metavar="X.Y.Z", | |
| help="Set an explicit version instead of bumping", | |
| ) | |
| args = parser.parse_args() | |
| current = read_version() | |
| if args.set: | |
| next_v = args.set | |
| elif args.sync_only: | |
| next_v = current | |
| else: | |
| next_v = bump(current, args.kind) | |
| write_version(next_v) | |
| print(next_v) | |
| if __name__ == "__main__": | |
| main() | |