From 10f0b5945efa7e82473ee1de9fd30b75af99c8df Mon Sep 17 00:00:00 2001 From: Jarm7 Date: Sun, 23 Mar 2025 00:10:57 +0100 Subject: [PATCH] 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 --- scripts/twilight-to-stable.py | 75 +++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/scripts/twilight-to-stable.py b/scripts/twilight-to-stable.py index 57fcd22..3870d70 100644 --- a/scripts/twilight-to-stable.py +++ b/scripts/twilight-to-stable.py @@ -7,37 +7,60 @@ 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 ") - sys.exit(1) - - workflow_id = int(sys.argv[1]) + + if len(sys.argv) != 2: + print("Usage: python scripts/twilight-to-stable.py ") + 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) - with open(TWILIGHT_RELEASE_NOTES, "r") as f: - twilight = json.load(f) + 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) - 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") - stable.append(twilight) + 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(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) + 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.") + 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() + main()