| 
									
										
										
										
											2024-10-04 15:01:03 +07:00
										 |  |  | import argparse | 
					
						
							|  |  |  | import json | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-04 16:02:46 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-04 15:01:03 +07:00
										 |  |  | 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' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-04 16:33:58 +07:00
										 |  |  |         if 'build' in board and 'flags_on' in board['build']: | 
					
						
							|  |  |  |             for f in board['build']['flags_on']: | 
					
						
							| 
									
										
										
										
											2024-10-04 15:01:03 +07:00
										 |  |  |                 if f == '': | 
					
						
							|  |  |  |                     matrix[toolchain].append(f'-b {name}') | 
					
						
							|  |  |  |                 else: | 
					
						
							| 
									
										
										
										
											2024-10-04 16:02:46 +07:00
										 |  |  |                     matrix[toolchain].append(f'-b {name} -f1 {f.replace(" ", " -f1 ")}') | 
					
						
							| 
									
										
										
										
											2024-10-04 15:01:03 +07:00
										 |  |  |         else: | 
					
						
							|  |  |  |             matrix[toolchain].append(f'-b {name}') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     print(json.dumps(matrix)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     main() |