kopia lustrzana https://github.com/espressif/esp-idf
71 wiersze
2.2 KiB
Python
71 wiersze
2.2 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
|
|
|
|
try:
|
|
import python_version_checker
|
|
|
|
# check the Python version before it will fail with an exception on syntax or package incompatibility.
|
|
python_version_checker.check()
|
|
except RuntimeError as e:
|
|
print(e)
|
|
raise SystemExit(1)
|
|
|
|
|
|
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()
|