www/scripts/twilight-to-stable.py
Jarm7 10f0b5945e
Update twilight-to-stable.py
Error handling:
- try-except blocks for file operations and JSON parsing
- Specific handling for FileNotFoundError and JSONDecodeError
Data and input validation
2025-03-23 00:10:57 +01:00

66 lines
2 KiB
Python

import json
import sys
import datetime
TWILIGHT_RELEASE_NOTES = "./src/release-notes/twilight.json"
STABLE_RELEASE_NOTES = "./src/release-notes/stable.json"
def main():
if len(sys.argv) != 2:
print("Usage: python scripts/twilight-to-stable.py <workflow-id>")
sys.exit(1)
try:
workflow_id = int(sys.argv[1])
if workflow_id < 0:
raise ValueError("Workflow ID must be a non-negative integer")
except ValueError as e:
print(f"Error: Invalid workflow-id - {str(e)}")
sys.exit(1)
try:
with open(TWILIGHT_RELEASE_NOTES, "r") as f:
twilight = json.load(f)
with open(STABLE_RELEASE_NOTES, "r") as f:
stable = json.load(f)
if not isinstance(twilight.get("version"), str):
raise ValueError("Twilight version must be a string")
twilight["workflowId"] = workflow_id
twilight["image"] = False
twilight["version"] = twilight["version"].replace("t", "b")
twilight["date"] = datetime.datetime.now().strftime("%d/%m/%Y")
if not isinstance(stable, list):
stable = [stable]
stable.append(twilight)
with open(STABLE_RELEASE_NOTES, "w") as f:
json.dump(stable, f, indent=2)
with open(TWILIGHT_RELEASE_NOTES, "w") as f:
json.dump({
"version": "xxx",
"image": False,
"extra": "",
"fixes": [],
"features": [],
}, f, indent=2)
print("Twilight release notes merged into stable release notes.")
except FileNotFoundError as e:
print(f"Error: Could not find file - {str(e)}")
sys.exit(1)
except json.JSONDecodeError as e:
print(f"Error: Invalid JSON format in release notes - {str(e)}")
sys.exit(1)
except Exception as e:
print(f"Error: An unexpected error occurred - {str(e)}")
sys.exit(1)
if __name__ == "__main__":
main()