summaryrefslogtreecommitdiffstats
path: root/tools/github-sync/read-json.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
commit43a97878ce14b72f0981164f87f2e35e14151312 (patch)
tree620249daf56c0258faa40cbdcf9cfba06de2a846 /tools/github-sync/read-json.py
parentInitial commit. (diff)
downloadfirefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz
firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-xtools/github-sync/read-json.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/github-sync/read-json.py b/tools/github-sync/read-json.py
new file mode 100755
index 0000000000..87264d7df4
--- /dev/null
+++ b/tools/github-sync/read-json.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import json
+import sys
+
+j = json.load(sys.stdin)
+components = sys.argv[1].split("/")
+
+
+def next_match(json_fragment, components):
+ if len(components) == 0:
+ yield json_fragment
+ else:
+ component = components[0]
+ if type(json_fragment) == list:
+ if component == "*":
+ for item in json_fragment:
+ yield from next_match(item, components[1:])
+ else:
+ component = int(component)
+ if component >= len(j):
+ sys.exit(1)
+ yield from next_match(json_fragment[component], components[1:])
+ elif type(json_fragment) == dict:
+ if component == "*":
+ for key in sorted(json_fragment.keys()):
+ yield from next_match(json_fragment[key], components[1:])
+ elif component not in json_fragment:
+ sys.exit(1)
+ else:
+ yield from next_match(json_fragment[component], components[1:])
+
+
+for match in list(next_match(j, components)):
+ if type(match) == dict:
+ print(" ".join(match.keys()))
+ else:
+ print(match)