Sfoglia il codice sorgente

error handling when notes_start_index is invalid

Ocasta 11 mesi fa
parent
commit
9fbd8318f0
1 ha cambiato i file con 42 aggiunte e 11 eliminazioni
  1. 42 11
      .github/scripts/overwrite_changeset_changelog.py

+ 42 - 11
.github/scripts/overwrite_changeset_changelog.py

@@ -31,13 +31,25 @@ NEW_CONTENT = os.environ.get("NEW_CONTENT", "")
 def overwrite_changelog_section(changelog_text: str, new_content: str):
     # Find the section for the specified version
     version_pattern = f"## {VERSION}\n"
+    bracketed_version_pattern = f"## [{VERSION}]\n"
     prev_version_pattern = f"## [{PREV_VERSION}]\n"
     print(f"latest version: {VERSION}")
     print(f"prev_version: {PREV_VERSION}")
 
+    # Try both unbracketed and bracketed version patterns
     version_index = changelog_text.find(version_pattern)
     if version_index == -1:
-        raise ValueError(f"Could not find version {VERSION} in changelog")
+        version_index = changelog_text.find(bracketed_version_pattern)
+        if version_index == -1:
+            # If version not found, add it at the top (after the first line)
+            first_newline = changelog_text.find('\n')
+            if first_newline == -1:
+                # If no newline found, just prepend
+                return f"## [{VERSION}]\n\n{changelog_text}"
+            return f"{changelog_text[:first_newline + 1]}## [{VERSION}]\n\n{changelog_text[first_newline + 1:]}"
+        else:
+            # Using bracketed version
+            version_pattern = bracketed_version_pattern
 
     notes_start_index = version_index + len(version_pattern)
     notes_end_index = changelog_text.find(prev_version_pattern, notes_start_index) if PREV_VERSION and prev_version_pattern in changelog_text else len(changelog_text)
@@ -54,18 +66,37 @@ def overwrite_changelog_section(changelog_text: str, new_content: str):
             # Remove the first two lines from the regular changeset format, ex: \n### Patch Changes
             parsed_lines = "\n".join(changeset_lines[2:])
         updated_changelog = changelog_text[:notes_start_index] + parsed_lines + changelog_text[notes_end_index:]
+        # Ensure version number is bracketed
         updated_changelog = updated_changelog.replace(f"## {VERSION}", f"## [{VERSION}]")
         return updated_changelog
 
-with open(CHANGELOG_PATH, 'r') as f:
-    changelog_content = f.read()
+try:
+    print(f"Reading changelog from: {CHANGELOG_PATH}")
+    with open(CHANGELOG_PATH, 'r') as f:
+        changelog_content = f.read()
+
+    print(f"Changelog content length: {len(changelog_content)} characters")
+    print("First 200 characters of changelog:")
+    print(changelog_content[:200])
+    print("----------------------------------------------------------------------------------")
+
+    new_changelog = overwrite_changelog_section(changelog_content, NEW_CONTENT)
+    
+    print("New changelog content:")
+    print("----------------------------------------------------------------------------------")
+    print(new_changelog)
+    print("----------------------------------------------------------------------------------")
+    
+    print(f"Writing updated changelog back to: {CHANGELOG_PATH}")
+    with open(CHANGELOG_PATH, 'w') as f:
+        f.write(new_changelog)
 
-new_changelog = overwrite_changelog_section(changelog_content, NEW_CONTENT)
-print("----------------------------------------------------------------------------------")
-print(new_changelog)
-print("----------------------------------------------------------------------------------")
-# Write back to CHANGELOG.md
-with open(CHANGELOG_PATH, 'w') as f:
-    f.write(new_changelog)
+    print(f"{CHANGELOG_PATH} updated successfully!")
 
-print(f"{CHANGELOG_PATH} updated successfully!")
+except FileNotFoundError:
+    print(f"Error: Changelog file not found at {CHANGELOG_PATH}")
+    exit(1)
+except Exception as e:
+    print(f"Error updating changelog: {str(e)}")
+    print(f"Current working directory: {os.getcwd()}")
+    exit(1)