diff --git a/README.md b/README.md index 57e29c61..33df8cff 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,11 @@ Use `-v` on any action to get verbose logging: $ pmbootstrap -v build hello-world ``` +Parse a single deviceinfo and return it as JSON: +``` +$ pmbootstrap deviceinfo_parse pine64-pinephone +``` + Parse a single APKBUILD and return it as JSON: ``` $ pmbootstrap apkbuild_parse hello-world diff --git a/pmb/helpers/frontend.py b/pmb/helpers/frontend.py index 7de09d97..4de25663 100644 --- a/pmb/helpers/frontend.py +++ b/pmb/helpers/frontend.py @@ -15,6 +15,7 @@ import pmb.chroot.other import pmb.config import pmb.export import pmb.flasher +import pmb.helpers.devices import pmb.helpers.git import pmb.helpers.lint import pmb.helpers.logging @@ -367,6 +368,20 @@ def kconfig(args): pmb.build.menuconfig(args, args.package) +def deviceinfo_parse(args): + # Default to all devices + devices = args.devices + if not devices: + devices = pmb.helpers.devices.list_codenames(args) + + # Iterate over all devices + kernel = args.deviceinfo_parse_kernel + for device in devices: + print(f"{device}, with kernel={kernel}:") + print(json.dumps(pmb.parse.deviceinfo(args, device, kernel), indent=4, + sort_keys=True)) + + def apkbuild_parse(args): # Default to all packages packages = args.packages diff --git a/pmb/parse/arguments.py b/pmb/parse/arguments.py index c315daab..4ad7bd8f 100644 --- a/pmb/parse/arguments.py +++ b/pmb/parse/arguments.py @@ -623,6 +623,15 @@ def arguments(): " a kernel compiled with envkernel.sh.") add_packages_arg(build, nargs="+") + # Action: deviceinfo_parse + deviceinfo_parse = sub.add_parser("deviceinfo_parse") + deviceinfo_parse.add_argument("devices", nargs="*") + deviceinfo_parse.add_argument("--kernel", help="the kernel to select (for" + " device packages with multiple kernels)," + " e.g. 'downstream', 'mainline'", + dest="deviceinfo_parse_kernel", + metavar="KERNEL") + # Action: apkbuild_parse apkbuild_parse = sub.add_parser("apkbuild_parse") add_packages_arg(apkbuild_parse, nargs="*")