diff --git a/scripts/viewer/sync_viser_message_defs.py b/scripts/viewer/sync_viser_message_defs.py index 452621ddc..369836acb 100644 --- a/scripts/viewer/sync_viser_message_defs.py +++ b/scripts/viewer/sync_viser_message_defs.py @@ -1,6 +1,7 @@ """Generate viser message definitions for TypeScript, by parsing Python dataclasses.""" +import json import pathlib -import subprocess +from datetime import datetime import tyro from viser.infra import generate_typescript_interfaces @@ -23,13 +24,24 @@ def main() -> None: "nerfstudio/viewer/app/src/modules/WebSocket/ViserMessages.tsx" ) assert target_path.exists() - target_path.write_text(defs, encoding="utf_8") - print(f"Wrote to {target_path}") - # Run prettier. - # TODO: if this is not installed maybe we should print some error with installation - # instructions? - subprocess.run(args=["prettier", "-w", str(target_path)], check=False) + old_defs = target_path.read_text(encoding="utf_8") + + if old_defs != defs: + target_path.write_text(defs, encoding="utf_8") + + with open("nerfstudio/viewer/app/package.json", "r", encoding="utf_8") as f: + data = json.load(f) + + now = datetime.now() + data["version"] = now.strftime("%y-%m-%d") + "-0" + + with open("nerfstudio/viewer/app/package.json", "w", encoding="utf_8") as f: + json.dump(data, f, indent=2) + print(f"Wrote updates to {target_path}") + print(f"Current viewer version is now {data['version']}") + else: + print("No update to messages.") def entrypoint() -> None: