Refactored "base" paltform

This commit is contained in:
Ivan Kravets
2014-07-30 22:40:11 +03:00
parent 02d7aa1e1e
commit dac83d6164
11 changed files with 47 additions and 22 deletions

View File

@ -3,7 +3,7 @@
from click import argument, command, option, secho
from platformio.platforms._base import PlatformFactory
from platformio.platforms.base import PlatformFactory
@command("install", short_help="Install new platforms")

View File

@ -9,7 +9,7 @@ from platformio.pkgmanager import PackageManager
@command("list", short_help="List installed platforms")
def cli():
for name, pkgs in PackageManager.get_installed().iteritems():
for name, pkgs in PackageManager.get_installed().items():
echo("{name:<20} with packages: {pkgs}".format(
name=style(name, fg="cyan"),
pkgs=", ".join(pkgs.keys())

View File

@ -5,7 +5,7 @@ from click import command, echo, option, secho, style
from platformio.exception import (InvalidEnvName, ProjectEnvsNotAvaialable,
UndefinedEnvPlatform, UnknownEnvNames)
from platformio.platforms._base import PlatformFactory
from platformio.platforms.base import PlatformFactory
from platformio.util import get_project_config

View File

@ -3,7 +3,7 @@
from click import argument, command, echo, style
from platformio.platforms._base import PlatformFactory
from platformio.platforms.base import PlatformFactory
from platformio.util import get_platforms

View File

@ -7,7 +7,7 @@ from click import argument, command, echo, style
from platformio.exception import PlatformNotInstalledYet
from platformio.pkgmanager import PackageManager
from platformio.platforms._base import PlatformFactory
from platformio.platforms.base import PlatformFactory
@command("show", short_help="Show details about an installed platforms")
@ -22,7 +22,7 @@ def cli(platform):
info=p.get_short_info()))
pm = PackageManager(platform)
for name, data in pm.get_installed(platform).iteritems():
for name, data in pm.get_installed(platform).items():
echo("----------")
echo("Package: %s" % style(name, fg="yellow"))
echo("Location: %s" % join(pm.get_platform_dir(), data['path']))

View File

@ -5,7 +5,7 @@ from click import argument, command, secho
from platformio.exception import PlatformNotInstalledYet
from platformio.pkgmanager import PackageManager
from platformio.platforms._base import PlatformFactory
from platformio.platforms.base import PlatformFactory
@command("uninstall", short_help="Uninstall platforms")

View File

@ -4,7 +4,7 @@
from click import command, echo, style
from platformio.pkgmanager import PackageManager
from platformio.platforms._base import PlatformFactory
from platformio.platforms.base import PlatformFactory
@command("update", short_help="Update installed platforms")

View File

@ -3,7 +3,7 @@
from os.path import join
from platformio.platforms._base import BasePlatform
from platformio.platforms.base import BasePlatform
class AtmelavrPlatform(BasePlatform):

View File

@ -40,30 +40,55 @@ class BasePlatform(object):
else:
raise NotImplementedError()
def install(self, with_packages, without_packages):
requirements = []
pm = PackageManager(self.get_name())
def get_pkgname_by_alias(self, alias):
for name, opts in self.PACKAGES.items():
if opts.get("alias", None) == alias:
return name
return None
upkgs = set(with_packages + without_packages)
def install(self, with_packages, without_packages, skip_default_packages):
with_packages = set(with_packages)
without_packages = set(without_packages)
upkgs = with_packages | without_packages
ppkgs = set(self.PACKAGES.keys())
if not upkgs.issubset(ppkgs):
raise UnknownPackage(", ".join(upkgs - ppkgs))
unknown = upkgs - ppkgs
if unknown:
_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)
for name, opts in self.PACKAGES.iteritems():
if _unknown:
raise UnknownPackage(", ".join(_unknown))
requirements = []
for name, opts in self.PACKAGES.items():
if name in without_packages:
continue
elif name in with_packages or opts["default"]:
requirements.append((name, opts["path"]))
elif (name in with_packages or (not skip_default_packages and
opts['default'])):
requirements.append((name, opts['path']))
pm = PackageManager(self.get_name())
for (package, path) in requirements:
pm.install(package, path)
return True
return len(requirements)
def uninstall(self):
platform = self.get_name()
pm = PackageManager(platform)
for package, data in pm.get_installed(platform).iteritems():
for package, data in pm.get_installed(platform).items():
pm.uninstall(package, data['path'])
pm.unregister_platform(platform)

View File

@ -3,7 +3,7 @@
from os.path import join
from platformio.platforms._base import BasePlatform
from platformio.platforms.base import BasePlatform
class Timsp430Platform(BasePlatform):

View File

@ -3,7 +3,7 @@
from os.path import join
from platformio.platforms._base import BasePlatform
from platformio.platforms.base import BasePlatform
class TitivaPlatform(BasePlatform):