about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/gnome/extensions/update-extensions.py
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-12-01 19:00:09 +0100
committerAlyssa Ross <hi@alyssa.is>2023-12-01 19:00:09 +0100
commit9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d (patch)
tree4368f9e4cb2d5b93a956c085337e45cb70f1e331 /nixpkgs/pkgs/desktops/gnome/extensions/update-extensions.py
parenta9cbfb6941b47d6f50129e6e36927882392daed7 (diff)
parent2344fe1da14cb08b0c18743b207995f9b8597915 (diff)
downloadnixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.gz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.bz2
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.lz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.xz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.zst
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.zip
Merge https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/pkgs/desktops/gnome/extensions/update-extensions.py')
-rwxr-xr-xnixpkgs/pkgs/desktops/gnome/extensions/update-extensions.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/nixpkgs/pkgs/desktops/gnome/extensions/update-extensions.py b/nixpkgs/pkgs/desktops/gnome/extensions/update-extensions.py
index b381aba36af6..4746c2558655 100755
--- a/nixpkgs/pkgs/desktops/gnome/extensions/update-extensions.py
+++ b/nixpkgs/pkgs/desktops/gnome/extensions/update-extensions.py
@@ -20,6 +20,7 @@ supported_versions = {
     "42": "42",
     "43": "43",
     "44": "44",
+    "45": "45",
 }
 
 # Some type alias to increase readability of complex compound types
@@ -266,15 +267,28 @@ if __name__ == "__main__":
             processed_extensions.append(processed_extension)
             logging.debug(f"Processed {num + 1} / {len(raw_extensions)}")
 
+    # We micro-manage a lot of the serialization process to keep the diffs optimal.
+    # We generally want most of the attributes of an extension on one line,
+    # but then each of its supported versions with metadata on a new line.
     with open(updater_dir_path / "extensions.json", "w") as out:
-        # Manually pretty-print the outer level, but then do one compact line per extension
-        # This allows for the diffs to be manageable (one line of change per extension) despite their quantity
         for index, extension in enumerate(processed_extensions):
+            # Manually pretty-print the outermost array level
             if index == 0:
                 out.write("[ ")
             else:
                 out.write(", ")
-            json.dump(extension, out, ensure_ascii=False)
+            # Dump each extension into a single-line string forst
+            extension = json.dumps(extension, ensure_ascii=False)
+            # Inject line breaks for each supported version
+            for version in supported_versions:
+                # This one only matches the first entry
+                extension = extension.replace(f"{{\"{version}\": {{", f"{{\n    \"{version}\": {{")
+                # All other entries
+                extension = extension.replace(f", \"{version}\": {{", f",\n    \"{version}\": {{")
+            # One last line break around the closing braces
+            extension = extension.replace("}}}", "}\n  }}")
+
+            out.write(extension)
             out.write("\n")
         out.write("]\n")