INNER CODE UNIT · Python
inventory
yaojingang/GEOFlow · deployment/generate-upgrade-plan.py:68
def inventory(root: Path, previous: dict) -> list[dict]:
known = {entry["name"]: entry for entry in previous.get("migrations", [])}
result = []
for path in sorted((root / "database/migrations").glob("*.php")):
if path.is_symlink() or not path.is_file():
raise ValueError(f"Migration must be a regular file: {path.name}")
digest = hashlib.sha256(path.read_bytes()).hexdigest()
old = known.get(path.stem, {})
result.append({
"name": path.stem,
"sha256": digest,
"online": old.get("online") is True and old.get("sha256") == digest,
})
return result
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)