about summary refs log tree commit diff
path: root/pkgs/development/dotnet-modules/python-language-server/process_lockfile.py
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/dotnet-modules/python-language-server/process_lockfile.py')
-rwxr-xr-xpkgs/development/dotnet-modules/python-language-server/process_lockfile.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/pkgs/development/dotnet-modules/python-language-server/process_lockfile.py b/pkgs/development/dotnet-modules/python-language-server/process_lockfile.py
new file mode 100755
index 000000000000..d67bdf048c8a
--- /dev/null
+++ b/pkgs/development/dotnet-modules/python-language-server/process_lockfile.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+
+import json
+import sys
+
+
+def process_section(name, section):
+    packages = set()
+
+    if "resolved" in section:
+        packages.add((name, section["resolved"]))
+
+    if "dependencies" in section:
+        for name in section["dependencies"]:
+            packages.add((name, section["dependencies"][name]))
+
+    return packages
+
+
+def main():
+    with open(sys.argv[1], 'r') as f:
+        tree = json.loads(f.read())
+
+    packages = set()
+
+    topDependencies = tree["dependencies"]
+
+    for area in topDependencies:
+        for name in topDependencies[area]:
+            packages = packages.union(process_section(name, topDependencies[area][name]))
+
+    for (name, version) in packages:
+        print("%s %s" % (name, version))
+
+
+if __name__ == "__main__":
+    main()