Skip to content

Commit 40c5330

Browse files
committed
west build: display sorted list of boards on error
This commit modifies the `west build` command to display a sorted list of available boards when an invalid board is specified, making it easier for users to find the correct board name. Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
1 parent 77c2c45 commit 40c5330

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

cmake/modules/boards.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ else()
221221
message("No board named '${BOARD}' found.\n\n"
222222
"Please choose one of the following boards:\n"
223223
)
224-
execute_process(${list_boards_commands})
224+
execute_process(${list_boards_commands} --sort-by-name)
225225
unset(CACHED_BOARD CACHE)
226226
message(FATAL_ERROR "Invalid BOARD; see above.")
227227
endif()

scripts/list_boards.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,8 @@ def add_args(parser):
378378
def add_args_formatting(parser):
379379
parser.add_argument("--cmakeformat", default=None,
380380
help='''CMake Format string to use to list each board''')
381+
parser.add_argument("--sort-by-name", default=False, action='store_true',
382+
help='''Sort board groups by name''')
381383

382384

383385
def variant_v2_qualifiers(variant, qualifiers = None):
@@ -413,9 +415,11 @@ def board_v2_qualifiers_csv(board):
413415

414416

415417
def dump_v2_boards(args):
416-
boards = find_v2_boards(args)
418+
boards = find_v2_boards(args).values()
419+
if args.sort_by_name:
420+
boards = sorted(boards, key=lambda b: b.name)
417421

418-
for b in boards.values():
422+
for b in boards:
419423
qualifiers_list = board_v2_qualifiers(b)
420424
if args.cmakeformat is not None:
421425
notfound = lambda x: x or 'NOTFOUND'
@@ -439,10 +443,14 @@ def dump_v2_boards(args):
439443

440444

441445
def dump_boards(args):
442-
arch2boards = find_arch2boards(args)
443-
for arch, boards in arch2boards.items():
446+
arch2boards = find_arch2boards(args).items()
447+
if args.sort_by_name:
448+
arch2boards = sorted(arch2boards, key=lambda x: x[0])
449+
for arch, boards in arch2boards:
444450
if args.cmakeformat is None:
445451
print(f'{arch}:')
452+
if args.sort_by_name:
453+
boards = sorted(boards, key=lambda b: b.name)
446454
for board in boards:
447455
if args.cmakeformat is not None:
448456
info = args.cmakeformat.format(

0 commit comments

Comments
 (0)