Ctrl K
ComunidadGuías…

scripts/check-product-versions.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env python3
"""Fail a release when Firecrab package versions or install defaults disagree."""

import json
from pathlib import Path
import sys
import tomllib

ROOT = Path(__file__).resolve().parent.parent


def main():
    workspace = tomllib.loads((ROOT / "Cargo.toml").read_text())
    version = workspace["workspace"]["package"]["version"]
    problems = []

    def expect(path, actual):
        if actual != version:
            problems.append(f"{path}: {actual!r}, expected {version}")

    for path in ["Cargo.lock"]:
        lock = tomllib.loads((ROOT / path).read_text())
        for package in lock["package"]:
            if package["name"].startswith("firecrab-"):
                expect(f"{path}: {package['name']}", package["version"])
    for directory in ["firecrab-frontend", "firecrab-e2e"]:
        package = json.loads((ROOT / directory / "package.json").read_text())
        lock = json.loads((ROOT / directory / "package-lock.json").read_text())
        expect(f"{directory}/package.json", package["version"])
        expect(f"{directory}/package-lock.json", lock["version"])
        expect(f"{directory}/package-lock.json root", lock["packages"][""]["version"])

    for path in ["packaging/micromanager.toml", "packaging/micromanager-dev.toml"]:
        file = ROOT / path
        if file.exists() and "firecrab" in tomllib.loads(file.read_text()):
            problems.append(f"{path}: fixed Firecrab release inputs must not be bundled")
    if problems:
        print("\n".join(problems), file=sys.stderr)
        return 1
    print(f"Firecrab product versions agree on {version}; managed installs have no fixed Firecrab release.")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())