mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-10-15 09:04:08 +00:00
54 lines
1.5 KiB
Python
Executable File
54 lines
1.5 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
"""
|
|
Usage: snap-seed-add-providers $SEED_DIR
|
|
|
|
Check the snaps referenced by the $SEED_DIR/seed.yaml and print any
|
|
missing providers.
|
|
|
|
"""
|
|
|
|
import contextlib
|
|
import pathlib
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
import yaml
|
|
|
|
|
|
@contextlib.contextmanager
|
|
def mounted(thing, target):
|
|
subprocess.run(["mount", "-r", thing, target], check=True)
|
|
try:
|
|
yield
|
|
finally:
|
|
subprocess.run(["umount", target], check=True)
|
|
|
|
|
|
def main(argv):
|
|
seed_dir = pathlib.Path(argv[0])
|
|
assert seed_dir.is_dir()
|
|
with seed_dir.joinpath("seed.yaml").open() as fp:
|
|
seed = yaml.safe_load(fp)
|
|
snap_files = set()
|
|
snap_names = set()
|
|
for snap_info in seed["snaps"]:
|
|
snap_files.add(snap_info["file"])
|
|
snap_names.add(snap_info["name"])
|
|
tempdir = pathlib.Path(tempfile.mkdtemp())
|
|
for snap_file in snap_files:
|
|
snap = seed_dir.joinpath("snaps", snap_file)
|
|
with mounted(snap, tempdir):
|
|
with tempdir.joinpath("meta/snap.yaml").open() as fp:
|
|
metadata = yaml.safe_load(fp)
|
|
for plug_name, plug_info in metadata.get("plugs", {}).items():
|
|
if plug_info.get("interface") == "content":
|
|
default_provider = plug_info.get("default-provider")
|
|
if default_provider and default_provider not in snap_names:
|
|
print(default_provider)
|
|
snap_names.add(default_provider)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv[1:])
|