diff --git a/platformio/commands/boards.py b/platformio/commands/boards.py index 0d9d6015..7e7836d6 100644 --- a/platformio/commands/boards.py +++ b/platformio/commands/boards.py @@ -16,7 +16,6 @@ import json import click -from platformio.exception import APIRequestError, InternetIsOffline from platformio.managers.platform import PlatformManager @@ -80,27 +79,12 @@ def print_boards(boards): def _get_boards(installed=False): - boards = PlatformManager().get_installed_boards() - if not installed: - know_boards = ["%s:%s" % (b['platform'], b['id']) for b in boards] - try: - for board in PlatformManager().get_registered_boards(): - key = "%s:%s" % (board['platform'], board['id']) - if key not in know_boards: - boards.append(board) - except InternetIsOffline: - pass - return sorted(boards, key=lambda b: b['name']) - + pm = PlatformManager() + return pm.get_installed_boards() if installed else pm.get_all_boards() def _print_boards_json(query, installed=False): result = [] - try: - boards = _get_boards(installed) - except APIRequestError: - if not installed: - boards = _get_boards(True) - for board in boards: + for board in _get_boards(installed): if query: search_data = "%s %s" % (board['id'], json.dumps(board).lower()) if query.lower() not in search_data.lower(): diff --git a/platformio/managers/platform.py b/platformio/managers/platform.py index 6497b00f..f3075230 100644 --- a/platformio/managers/platform.py +++ b/platformio/managers/platform.py @@ -167,6 +167,18 @@ class PlatformManager(BasePkgManager): def get_registered_boards(): return util.get_api_result("/boards", cache_valid="30d") + def get_all_boards(self): + boards = self.get_installed_boards() + know_boards = ["%s:%s" % (b['platform'], b['id']) for b in boards] + try: + for board in self.get_registered_boards(): + key = "%s:%s" % (board['platform'], board['id']) + if key not in know_boards: + boards.append(board) + except (exception.APIRequestError, exception.InternetIsOffline): + pass + return sorted(boards, key=lambda b: b['name']) + def board_config(self, id_, platform=None): for manifest in self.get_installed_boards(): if manifest['id'] == id_ and (not platform