listmachines.py 864 B

1234567891011121314151617181920212223242526272829
  1. #! /usr/bin/env python3
  2. import pathlib
  3. import typing
  4. import sys
  5. """
  6. List all of the machines available under the listed sub-layers of meta-arm.
  7. """
  8. def list_machines(layers: typing.Sequence[str]) -> typing.Set[str]:
  9. machines = set()
  10. # We know we're in meta-arm/scripts, so find the top-level directory
  11. metaarm = pathlib.Path(__file__).resolve().parent.parent
  12. if metaarm.name != "meta-arm":
  13. raise Exception("Not running inside meta-arm")
  14. for layer in layers:
  15. machines |= set(p.stem for p in (metaarm / layer / "conf" / "machine").glob("*.conf"))
  16. return machines
  17. if __name__ == "__main__":
  18. if len(sys.argv) > 1:
  19. machines = list_machines(sys.argv[1:])
  20. print(" ".join(sorted(machines)))
  21. sys.exit(0)
  22. else:
  23. print("Usage:\n$ %s [layer name ...] " % sys.argv[0])
  24. sys.exit(1)