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