Skip to content

Commit ae0eabe

Browse files
committed
fix: display correct help in the idf_size.py wrapper
Currently the wrapper tries to figure out which version of the esp-idf-size should be started. The legacy version is used if explicitly requested by the -l/--legacy option or if json format is specified. This works fine, but if help is requested, it is printed for the wrapper as shown bellow $ idf_size.py -h usage: idf_size.py [-h] [--format FORMAT] [-l] options: -h, --help show this help message and exit --format FORMAT -l, --legacy This is not convenient and the full help from the underlying version should be displayed. Fix this by only peeking into the args to figure out if legacy or refactored version should be started and always spawn the underlying esp_idf_size python module. This is done by using exit_on_error=False and add_help=False for the ArgumentParser. When help for refactored version is requested a note as following is printed to notify users that the legacy version can still be used. $ idf_size.py -h Note: legacy esp_idf_size version can be invoked by specifying the -l/--legacy option or by setting the ESP_IDF_SIZE_LEGACY environment variable. Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
1 parent bf415f5 commit ae0eabe

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

tools/idf_size.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,40 @@
11
#!/usr/bin/env python
22
#
3-
# SPDX-FileCopyrightText: 2017-2023 Espressif Systems (Shanghai) CO LTD
3+
# SPDX-FileCopyrightText: 2017-2024 Espressif Systems (Shanghai) CO LTD
44
#
55
# SPDX-License-Identifier: Apache-2.0
66
#
7-
87
import argparse
98
import os
109
import subprocess
1110
import sys
1211

1312
if __name__ == '__main__':
14-
parser = argparse.ArgumentParser()
13+
# Here the argparse is used only to "peek" into arguments if
14+
# legacy version is requested or if old json format is specified.
15+
# In these two cases the esp_idf_size legacy version is spawned.
16+
parser = argparse.ArgumentParser(exit_on_error=False, add_help=False)
1517
parser.add_argument('--format')
1618
parser.add_argument('-l', '--legacy', action='store_true', default=os.environ.get('ESP_IDF_SIZE_LEGACY', '0') == '1')
19+
20+
# The sys.argv is parsed with "exit_on_error", but the argparse.ArgumentError
21+
# exception should never occur, because unknown args should be put into
22+
# the rest variable, since the parse_known_args() method is used.
1723
args, rest = parser.parse_known_args()
1824

1925
if not args.legacy and args.format != 'json':
26+
# By default start the refactored version, unless legacy version is explicitly requested with
27+
# -l/--legacy option or if old json format is specified.
2028
try:
2129
import esp_idf_size.ng # noqa: F401
2230
except ImportError:
2331
print('warning: refactored esp-idf-size not installed, using legacy mode', file=sys.stderr)
2432
args.legacy = True
2533
else:
2634
os.environ['ESP_IDF_SIZE_NG'] = '1'
27-
28-
if args.legacy and args.format in ['json2', 'raw', 'tree']:
29-
sys.exit(f'Legacy esp-idf-size does not support {args.format} format')
35+
if not rest or '-h' in rest or '--help' in rest:
36+
print(('Note: legacy esp_idf_size version can be invoked by specifying the -l/--legacy '
37+
'option or by setting the ESP_IDF_SIZE_LEGACY environment variable.'))
3038

3139
if args.format is not None:
3240
rest = ['--format', args.format] + rest

0 commit comments

Comments
 (0)