aboutsummaryrefslogtreecommitdiffstats
path: root/ci/listmachines.py
blob: 04d207e48b20b1fc0f51d275d2ea24361c5a5333 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#! /usr/bin/env python3

import pathlib
import typing
import sys

"""
List all of the machines available under the listed sub-layers of meta-arm.
"""
def list_machines(layers: typing.Sequence[str]) -> typing.Set[str]:
    machines = set()

    # We know we're in meta-arm/scripts, so find the top-level directory
    metaarm = pathlib.Path(__file__).resolve().parent.parent
    if metaarm.name != "meta-arm":
        raise Exception("Not running inside meta-arm")
    
    for layer in layers:
        machines |= set(p.stem for p in (metaarm / layer / "conf" / "machine").glob("*.conf"))
    return machines

if __name__ == "__main__":
    if len(sys.argv) > 1:
        machines = list_machines(sys.argv[1:])
        print(" ".join(sorted(machines)))
        sys.exit(0)
    else:
        print("Usage:\n$ %s [layer name ...] " % sys.argv[0])
        sys.exit(1)