mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 09:01:40 +01:00 
			
		
		
		
	
		
			
	
	
		
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/env python
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# SPDX-License-Identifier: Apache-2.0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# This script is used from the $IDF_PATH/install.* scripts. This way the argument parsing can be done at one place and
							 | 
						||
| 
								 | 
							
								# doesn't have to be implemented for all shells.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import argparse
							 | 
						||
| 
								 | 
							
								from itertools import chain
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def action_extract_features(args: str) -> None:
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Command line arguments starting with "--enable-" are features. This function selects those and prints them.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    features = ['core']  # "core" features should be always installed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if args:
							 | 
						||
| 
								 | 
							
								        arg_prefix = '--enable-'
							 | 
						||
| 
								 | 
							
								        features += [arg[len(arg_prefix):] for arg in args.split() if arg.startswith(arg_prefix)]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    print(','.join(features))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def action_extract_targets(args: str) -> None:
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Command line arguments starting with "esp" are chip targets. This function selects those and prints them.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    target_sep = ','
							 | 
						||
| 
								 | 
							
								    targets = []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if args:
							 | 
						||
| 
								 | 
							
								        target_args = (arg for arg in args.split() if arg.lower().startswith('esp'))
							 | 
						||
| 
								 | 
							
								        # target_args can be comma-separated lists of chip targets
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        targets = list(chain.from_iterable(commalist.split(target_sep) for commalist in target_args))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    print(target_sep.join(targets or ['all']))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def main() -> None:
							 | 
						||
| 
								 | 
							
								    parser = argparse.ArgumentParser()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    subparsers = parser.add_subparsers(dest='action', required=True)
							 | 
						||
| 
								 | 
							
								    extract = subparsers.add_parser('extract', help='Process arguments and extract part of it')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    extract.add_argument('type', choices=['targets', 'features'])
							 | 
						||
| 
								 | 
							
								    extract.add_argument('str-to-parse', nargs='?')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    args, unknown_args = parser.parse_known_args()
							 | 
						||
| 
								 | 
							
								    # standalone "--enable-" won't be included into str-to-parse
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    action_func = globals()['action_{}_{}'.format(args.action, args.type)]
							 | 
						||
| 
								 | 
							
								    str_to_parse = vars(args)['str-to-parse'] or ''
							 | 
						||
| 
								 | 
							
								    action_func(' '.join(chain([str_to_parse], unknown_args)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == '__main__':
							 | 
						||
| 
								 | 
							
								    main()
							 |