summaryrefslogtreecommitdiffstats
path: root/build/vs/generate_yaml.py
diff options
context:
space:
mode:
Diffstat (limited to 'build/vs/generate_yaml.py')
-rwxr-xr-xbuild/vs/generate_yaml.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/build/vs/generate_yaml.py b/build/vs/generate_yaml.py
new file mode 100755
index 0000000000..2d6a429d3e
--- /dev/null
+++ b/build/vs/generate_yaml.py
@@ -0,0 +1,55 @@
+#!/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 sys
+
+import yaml
+from vsdownload import (
+ getArgsParser,
+ getManifest,
+ getPackages,
+ getSelectedPackages,
+ lowercaseIgnores,
+ setPackageSelection,
+)
+
+if __name__ == "__main__":
+ parser = getArgsParser()
+ parser.add_argument("-o", dest="output", required=True, help="Output file")
+ args = parser.parse_args()
+ lowercaseIgnores(args)
+
+ packages = getPackages(getManifest(args))
+ setPackageSelection(args, packages)
+ selected = getSelectedPackages(packages, args)
+ reduced = []
+ # Filter-out data we won't be using.
+ for s in selected:
+ type = s["type"]
+ if type == "Component" or type == "Workload" or type == "Group":
+ continue
+ if type == "Vsix" or s["id"].startswith(("Win10SDK", "Win11SDK")):
+ filtered = {k: v for k, v in s.items() if k in ("type", "id", "version")}
+ filtered["payloads"] = [
+ {
+ k: v
+ for k, v in payload.items()
+ if k in ("fileName", "sha256", "size", "url")
+ }
+ for payload in s["payloads"]
+ if payload["fileName"].endswith((".cab", ".msi", ".vsix"))
+ ]
+ reduced.append(filtered)
+ with open(args.output, "w") as out:
+ print("# Generated with:", file=out)
+ print(
+ "# ./mach python --virtualenv build build/vs/generate_yaml.py \\", file=out
+ )
+ for i, arg in enumerate(sys.argv[1:]):
+ if i < len(sys.argv) - 2:
+ print("# ", arg, "\\", file=out)
+ else:
+ print("# ", arg, file=out)
+ print(yaml.dump(reduced), file=out)