mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 04:02:27 +00:00
feat: Install script help
Closes https://github.com/espressif/esp-idf/issues/11231
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
# doesn't have to be implemented for all shells.
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from itertools import chain
|
||||
|
||||
|
||||
@@ -47,6 +50,37 @@ def action_extract_targets(args: str) -> None:
|
||||
print(target_sep.join(targets or ['all']))
|
||||
|
||||
|
||||
def action_print_help(script_extension: str) -> None:
|
||||
"""
|
||||
This function prints a help message explaining how to use the install scripts.
|
||||
"""
|
||||
|
||||
# extract the list of features from ./requirements.json
|
||||
thisdir = os.path.dirname(os.path.realpath(__file__))
|
||||
with open(f'{thisdir}/requirements.json', 'r') as f:
|
||||
json_data = json.load(f)
|
||||
features = [feat['name'] for feat in json_data['features']]
|
||||
|
||||
if script_extension == 'bat':
|
||||
help_opts = '/?, -h, --help'
|
||||
elif script_extension == 'ps1':
|
||||
help_opts = '-h '
|
||||
else:
|
||||
help_opts = '-h, --help '
|
||||
|
||||
print(f"""usage: .{os.path.sep}install.{script_extension} [-h] [targets-to-install] [--enable-*] [--disable-*]
|
||||
|
||||
optional arguments:
|
||||
targets-to-install 'all', a single target (e.g. 'esp32s2'), or a comma-separated list of targets (e.g. 'esp32,esp32c3,esp32h2')
|
||||
--enable-* a specific feature to enable (e.g. '--enable-ttfw' will enable feature ttfw)
|
||||
--disable-* a specific feature to disable (e.g. '--disable-ttfw' will disable feature ttfw)
|
||||
supported features: {', '.join(features)}
|
||||
{help_opts} show this help message and exit
|
||||
|
||||
For more information, please see https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/tools/idf-tools.html#install-scripts
|
||||
""")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
@@ -56,9 +90,17 @@ def main() -> None:
|
||||
extract.add_argument('type', choices=['targets', 'features'])
|
||||
extract.add_argument('str-to-parse', nargs='?')
|
||||
|
||||
if 'print_help' in sys.argv: # keep this option hidden until used
|
||||
print_help = subparsers.add_parser('print_help', help='Show install script help')
|
||||
print_help.add_argument('extension', choices=['sh', 'fish', 'ps1', 'bat'])
|
||||
|
||||
args, unknown_args = parser.parse_known_args()
|
||||
# standalone "--enable-" won't be included into str-to-parse
|
||||
|
||||
if args.action == 'print_help':
|
||||
action_print_help(args.extension)
|
||||
sys.exit(0)
|
||||
|
||||
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)))
|
||||
|
Reference in New Issue
Block a user