forked from platformio/platformio-core
Optimised conversion from package aliases to names
This commit is contained in:
@ -16,7 +16,7 @@ Release History
|
|||||||
* Implemented (especially for `SmartAnthill <http://smartanthill.ikravets.com/>`_)
|
* Implemented (especially for `SmartAnthill <http://smartanthill.ikravets.com/>`_)
|
||||||
``platformio run -t uploadlazy`` target (no dependencies to framework libs,
|
``platformio run -t uploadlazy`` target (no dependencies to framework libs,
|
||||||
ELF and etc.)
|
ELF and etc.)
|
||||||
* Allowed to skip default packages via ``platformio install--skip-default-package`` flag
|
* Allowed to skip default packages via ``platformio install --skip-default-package`` flag
|
||||||
|
|
||||||
|
|
||||||
0.3.1 (2014-06-21)
|
0.3.1 (2014-06-21)
|
||||||
|
@ -40,36 +40,27 @@ class BasePlatform(object):
|
|||||||
else:
|
else:
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
def get_pkgname_by_alias(self, alias):
|
def pkg_aliases_to_names(self, aliases):
|
||||||
for name, opts in self.PACKAGES.items():
|
names = []
|
||||||
if opts.get("alias", None) == alias:
|
for alias in aliases:
|
||||||
return name
|
name = alias
|
||||||
return None
|
# lookup by packages alias
|
||||||
|
if name not in self.PACKAGES:
|
||||||
|
for _name, _opts in self.PACKAGES.items():
|
||||||
|
if _opts.get("alias", None) == alias:
|
||||||
|
name = _name
|
||||||
|
break
|
||||||
|
names.append(name)
|
||||||
|
return names
|
||||||
|
|
||||||
def install(self, with_packages, without_packages, skip_default_packages):
|
def install(self, with_packages, without_packages, skip_default_packages):
|
||||||
with_packages = set(with_packages)
|
with_packages = set(self.pkg_aliases_to_names(with_packages))
|
||||||
without_packages = set(without_packages)
|
without_packages = set(self.pkg_aliases_to_names(without_packages))
|
||||||
|
|
||||||
upkgs = with_packages | without_packages
|
upkgs = with_packages | without_packages
|
||||||
ppkgs = set(self.PACKAGES.keys())
|
ppkgs = set(self.PACKAGES.keys())
|
||||||
unknown = upkgs - ppkgs
|
if not upkgs.issubset(ppkgs):
|
||||||
if unknown:
|
raise UnknownPackage(", ".join(upkgs - ppkgs))
|
||||||
_unknown = unknown.copy()
|
|
||||||
# maybe aliases
|
|
||||||
for alias in unknown:
|
|
||||||
pkgname = self.get_pkgname_by_alias(alias)
|
|
||||||
if pkgname not in self.PACKAGES:
|
|
||||||
continue
|
|
||||||
if alias in with_packages:
|
|
||||||
with_packages.discard(alias)
|
|
||||||
with_packages.add(pkgname)
|
|
||||||
if alias in without_packages:
|
|
||||||
without_packages.discard(alias)
|
|
||||||
without_packages.add(pkgname)
|
|
||||||
_unknown.discard(alias)
|
|
||||||
|
|
||||||
if _unknown:
|
|
||||||
raise UnknownPackage(", ".join(_unknown))
|
|
||||||
|
|
||||||
requirements = []
|
requirements = []
|
||||||
for name, opts in self.PACKAGES.items():
|
for name, opts in self.PACKAGES.items():
|
||||||
|
Reference in New Issue
Block a user