forked from platformio/platformio-core
Allow to initialize project in off-line mode
This commit is contained in:
@ -21,8 +21,7 @@ from tempfile import mkdtemp
|
||||
import click
|
||||
|
||||
from platformio import app, util
|
||||
from platformio.commands.init import cli as cmd_init
|
||||
from platformio.commands.init import validate_boards
|
||||
from platformio.commands.init import cli as cmd_init, validate_boards
|
||||
from platformio.commands.run import cli as cmd_run
|
||||
from platformio.exception import CIBuildEnvsEmpty
|
||||
|
||||
|
@ -29,19 +29,14 @@ from platformio.managers.platform import PlatformManager
|
||||
|
||||
def validate_boards(ctx, param, value): # pylint: disable=W0613
|
||||
pm = PlatformManager()
|
||||
# check installed boards
|
||||
known_boards = set([b['id'] for b in pm.get_installed_boards()])
|
||||
# if boards are not listed as installed, check registered boards
|
||||
if set(value) - known_boards:
|
||||
known_boards = set([b['id'] for b in pm.get_registered_boards()])
|
||||
unknown_boards = set(value) - known_boards
|
||||
for id_ in value:
|
||||
try:
|
||||
assert not unknown_boards
|
||||
pm.board_config(id_)
|
||||
except exception.UnknownBoard:
|
||||
raise click.BadParameter(
|
||||
"`%s`. Please search for board ID using `platformio boards` "
|
||||
"command" % id_)
|
||||
return value
|
||||
except AssertionError:
|
||||
raise click.BadParameter("%s. Please search for the board ID using "
|
||||
"`platformio boards` command" %
|
||||
", ".join(unknown_boards))
|
||||
|
||||
|
||||
@click.command(
|
||||
@ -291,7 +286,6 @@ def init_cvs_ignore(project_dir):
|
||||
|
||||
def fill_project_envs(ctx, project_dir, board_ids, project_option, env_prefix,
|
||||
force_download):
|
||||
installed_boards = PlatformManager().get_installed_boards()
|
||||
content = []
|
||||
used_boards = []
|
||||
used_platforms = []
|
||||
@ -303,24 +297,17 @@ def fill_project_envs(ctx, project_dir, board_ids, project_option, env_prefix,
|
||||
continue
|
||||
used_boards.append(config.get(section, "board"))
|
||||
|
||||
pm = PlatformManager()
|
||||
for id_ in board_ids:
|
||||
manifest = None
|
||||
for boards in (installed_boards,
|
||||
PlatformManager.get_registered_boards()):
|
||||
for b in boards:
|
||||
if b['id'] == id_:
|
||||
manifest = b
|
||||
break
|
||||
assert manifest is not None
|
||||
|
||||
used_platforms.append(manifest['platform'])
|
||||
board_config = pm.board_config(id_)
|
||||
used_platforms.append(board_config['platform'])
|
||||
if id_ in used_boards:
|
||||
continue
|
||||
used_boards.append(id_)
|
||||
|
||||
envopts = {"platform": manifest['platform'], "board": id_}
|
||||
envopts = {"platform": board_config['platform'], "board": id_}
|
||||
# find default framework for board
|
||||
frameworks = manifest.get("frameworks")
|
||||
frameworks = board_config.get("frameworks")
|
||||
if frameworks:
|
||||
envopts['framework'] = frameworks[0]
|
||||
|
||||
|
@ -118,6 +118,15 @@ class PlatformManager(BasePkgManager):
|
||||
def get_registered_boards():
|
||||
return util.get_api_result("/boards")
|
||||
|
||||
def board_config(self, id_):
|
||||
for manifest in self.get_installed_boards():
|
||||
if manifest['id'] == id_:
|
||||
return manifest
|
||||
for manifest in self.get_registered_boards():
|
||||
if manifest['id'] == id_:
|
||||
return manifest
|
||||
raise exception.UnknownBoard(id_)
|
||||
|
||||
|
||||
class PlatformFactory(object):
|
||||
|
||||
|
Reference in New Issue
Block a user