#!/usr/bin/env python3 # SPDX-License-Identifier: LGPL-2.1-or-later from argparse import ArgumentParser from pathlib import Path from subprocess import run, PIPE def extract_interfaces_xml(output_dir, executable): proc = run( args=[executable.absolute(), '--bus-introspect', 'list'], stdout=PIPE, check=True, universal_newlines=True) interface_names = (x.split()[1] for x in proc.stdout.splitlines()) for interface_name in interface_names: proc = run( args=[executable.absolute(), '--bus-introspect', interface_name], stdout=PIPE, check=True, universal_newlines=True) interface_file_name = output_dir / (interface_name + '.xml') interface_file_name.write_text(proc.stdout) interface_file_name.chmod(0o644) def main(): parser = ArgumentParser() parser.add_argument('output', type=Path) parser.add_argument('executables', nargs='+', type=Path) args = parser.parse_args() args.output.mkdir(exist_ok=True) for exe in args.executables: extract_interfaces_xml(args.output, exe) if __name__ == '__main__': main()