51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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']
 | |
|         flasher = board['flasher']
 | |
|         if flasher['name'] == 'esptool':
 | |
|             toolchain = 'esp-idf'
 | |
|         else:
 | |
|             toolchain = 'arm-gcc'
 | |
| 
 | |
|         build_board = f'-b {name}'
 | |
|         if 'build' in board:
 | |
|             if 'args' in board['build']:
 | |
|                 build_board += ' ' + ' '.join(f'-D{a}' for a in board['build']['args'])
 | |
|             if 'flags_on' in board['build']:
 | |
|                 for f in board['build']['flags_on']:
 | |
|                     if f == '':
 | |
|                         matrix[toolchain].append(build_board)
 | |
|                     else:
 | |
|                         matrix[toolchain].append(f'{build_board} -f1 {f.replace(" ", " -f1 ")}')
 | |
|             else:
 | |
|                 matrix[toolchain].append(build_board)
 | |
|         else:
 | |
|             matrix[toolchain].append(build_board)
 | |
| 
 | |
|     print(json.dumps(matrix))
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 | 
