import argparse import json import os def main(): parser = argparse.ArgumentParser() parser.add_argument('config_file', help='Configuration JSON file') args = parser.parse_args() config_file = args.config_file # if config file is not found, try to find it in the same directory as this script if not os.path.exists(config_file): config_file = os.path.join(os.path.dirname(__file__), config_file) with open(config_file) as f: config = json.load(f) matrix = { 'arm-gcc': [], 'esp-idf': [] } for board in config['boards']: name = board['name'] if board['flasher'] == 'esptool': toolchain = 'esp-idf' else: toolchain = 'arm-gcc' if 'build' in board and 'flags_on' in board['build']: for f in board['build']['flags_on']: if f == '': matrix[toolchain].append(f'-b {name}') else: matrix[toolchain].append(f'-b {name} -f1 {f.replace(" ", " -f1 ")}') else: matrix[toolchain].append(f'-b {name}') print(json.dumps(matrix)) if __name__ == '__main__': main()