Export ProjectConfig instance to templates generator // Issue #2824

This commit is contained in:
Ivan Kravets
2019-08-18 11:06:52 +03:00
parent 1a3720cfb9
commit 1dc15326c9
2 changed files with 42 additions and 42 deletions

View File

@@ -102,8 +102,7 @@ def cli(
ide is not None)
if ide:
pg = ProjectGenerator(project_dir, ide,
get_best_envname(project_dir, board))
pg = ProjectGenerator(project_dir, ide, board)
pg.generate()
if is_new_project:
@@ -131,29 +130,6 @@ def cli(
fg="green")
def get_best_envname(project_dir, boards=None):
config = ProjectConfig.get_instance(join(project_dir, "platformio.ini"))
config.validate()
envname = None
default_envs = config.default_envs()
if default_envs:
envname = default_envs[0]
if not boards:
return envname
for env in config.envs():
if not boards:
return env
if not envname:
envname = env
items = config.items(env=env, as_dict=True)
if "board" in items and items.get("board") in boards:
return env
return envname
def init_base_project(project_dir):
ProjectConfig(join(project_dir, "platformio.ini")).save()
with fs.cd(project_dir):

View File

@@ -32,10 +32,13 @@ from platformio.project.helpers import (get_project_lib_dir,
class ProjectGenerator(object):
def __init__(self, project_dir, ide, env_name):
def __init__(self, project_dir, ide, boards):
self.config = ProjectConfig.get_instance(
join(project_dir, "platformio.ini"))
self.config.validate()
self.project_dir = project_dir
self.ide = str(ide)
self.env_name = str(env_name)
self.env_name = str(self.get_best_envname(boards))
@staticmethod
def get_supported_ides():
@@ -43,33 +46,54 @@ class ProjectGenerator(object):
return sorted(
[d for d in os.listdir(tpls_dir) if isdir(join(tpls_dir, d))])
def get_best_envname(self, boards=None):
envname = None
default_envs = self.config.default_envs()
if default_envs:
envname = default_envs[0]
if not boards:
return envname
for env in self.config.envs():
if not boards:
return env
if not envname:
envname = env
items = self.config.items(env=env, as_dict=True)
if "board" in items and items.get("board") in boards:
return env
return envname
def _load_tplvars(self):
tpl_vars = {"env_name": self.env_name}
tpl_vars = {
"config": self.config,
"systype": util.get_systype(),
"project_name": basename(self.project_dir),
"project_dir": self.project_dir,
"env_name": self.env_name,
"user_home_dir": abspath(expanduser("~")),
"platformio_path": self._fix_os_path(
sys.argv[0] if isfile(sys.argv[0])
else where_is_program("platformio")),
"env_path": self._fix_os_path(os.getenv("PATH")),
"env_pathsep": os.pathsep
} # yapf: disable
# default env configuration
tpl_vars.update(
ProjectConfig.get_instance(join(
self.project_dir, "platformio.ini")).items(env=self.env_name,
as_dict=True))
tpl_vars.update(self.config.items(env=self.env_name, as_dict=True))
# build data
tpl_vars.update(
load_project_ide_data(self.project_dir, self.env_name) or {})
with fs.cd(self.project_dir):
tpl_vars.update({
"project_name": basename(self.project_dir),
"src_files": self.get_src_files(),
"user_home_dir": abspath(expanduser("~")),
"project_dir": self.project_dir,
"project_src_dir": get_project_src_dir(),
"project_lib_dir": get_project_lib_dir(),
"project_libdeps_dir": join(
get_project_libdeps_dir(), self.env_name),
"systype": util.get_systype(),
"platformio_path": self._fix_os_path(
sys.argv[0] if isfile(sys.argv[0])
else where_is_program("platformio")),
"env_pathsep": os.pathsep,
"env_path": self._fix_os_path(os.getenv("PATH"))
get_project_libdeps_dir(), self.env_name)
}) # yapf: disable
return tpl_vars