forked from platformio/platformio-core
Introduce platform names
This commit is contained in:
@ -18,18 +18,18 @@ def cli(query, json_output):
|
|||||||
platforms.sort()
|
platforms.sort()
|
||||||
for platform in platforms:
|
for platform in platforms:
|
||||||
p = PlatformFactory.newPlatform(platform)
|
p = PlatformFactory.newPlatform(platform)
|
||||||
name = p.get_name()
|
type_ = p.get_type()
|
||||||
description = p.get_description()
|
description = p.get_description()
|
||||||
|
|
||||||
if query == "all":
|
if query == "all":
|
||||||
query = ""
|
query = ""
|
||||||
|
|
||||||
search_data = "%s %s %s" % (name, description, p.get_packages())
|
search_data = "%s %s %s" % (type_, description, p.get_packages())
|
||||||
if query and query.lower() not in search_data.lower():
|
if query and query.lower() not in search_data.lower():
|
||||||
continue
|
continue
|
||||||
|
|
||||||
data.append({
|
data.append({
|
||||||
"name": name,
|
"type": type_,
|
||||||
"description": description,
|
"description": description,
|
||||||
"packages": p.get_packages()
|
"packages": p.get_packages()
|
||||||
})
|
})
|
||||||
@ -38,9 +38,9 @@ def cli(query, json_output):
|
|||||||
click.echo(json.dumps(data))
|
click.echo(json.dumps(data))
|
||||||
else:
|
else:
|
||||||
for item in data:
|
for item in data:
|
||||||
click.secho(item['name'], fg="cyan", nl=False)
|
click.secho(item['type'], fg="cyan", nl=False)
|
||||||
click.echo(" (available packages: %s)" % ", ".join(
|
click.echo(" (available packages: %s)" % ", ".join(
|
||||||
p.get_packages().keys()))
|
p.get_packages().keys()))
|
||||||
click.secho("-" * len(item['name']), fg="cyan")
|
click.secho("-" * len(item['type']), fg="cyan")
|
||||||
click.echo(item['description'])
|
click.echo(item['description'])
|
||||||
click.echo()
|
click.echo()
|
||||||
|
@ -30,7 +30,7 @@ def cli(ctx, platform):
|
|||||||
|
|
||||||
p = PlatformFactory.newPlatform(platform)
|
p = PlatformFactory.newPlatform(platform)
|
||||||
click.echo("{name:<20} - {description} [ {url} ]".format(
|
click.echo("{name:<20} - {description} [ {url} ]".format(
|
||||||
name=click.style(p.get_name(), fg="cyan"),
|
name=click.style(p.get_type(), fg="cyan"),
|
||||||
description=p.get_description(), url=p.get_vendor_url()))
|
description=p.get_description(), url=p.get_vendor_url()))
|
||||||
|
|
||||||
installed_packages = PackageManager.get_installed()
|
installed_packages = PackageManager.get_installed()
|
||||||
|
@ -37,6 +37,9 @@ class AtmelavrPlatform(BasePlatform):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "Atmel AVR"
|
||||||
|
|
||||||
def on_run_err(self, line): # pylint: disable=R0201
|
def on_run_err(self, line): # pylint: disable=R0201
|
||||||
# fix STDERR "flash written" for avrdude
|
# fix STDERR "flash written" for avrdude
|
||||||
if "avrdude" in line:
|
if "avrdude" in line:
|
||||||
|
@ -34,3 +34,6 @@ class AtmelsamPlatform(BasePlatform):
|
|||||||
"default": True
|
"default": True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "Atmel SAM"
|
||||||
|
@ -100,17 +100,17 @@ def get_packages():
|
|||||||
class PlatformFactory(object):
|
class PlatformFactory(object):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_clsname(name):
|
def get_clsname(type_):
|
||||||
return "%sPlatform" % name.title()
|
return "%sPlatform" % type_.title()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def load_module(name, path):
|
def load_module(type_, path):
|
||||||
module = None
|
module = None
|
||||||
try:
|
try:
|
||||||
module = load_source(
|
module = load_source(
|
||||||
"platformio.platforms.%s" % name, path)
|
"platformio.platforms.%s" % type_, path)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
raise exception.UnknownPlatform(name)
|
raise exception.UnknownPlatform(type_)
|
||||||
return module
|
return module
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -123,15 +123,15 @@ class PlatformFactory(object):
|
|||||||
for p in listdir(pdir):
|
for p in listdir(pdir):
|
||||||
if p in ("__init__.py", "base.py") or not p.endswith(".py"):
|
if p in ("__init__.py", "base.py") or not p.endswith(".py"):
|
||||||
continue
|
continue
|
||||||
name = p[:-3]
|
type_ = p[:-3]
|
||||||
path = join(pdir, p)
|
path = join(pdir, p)
|
||||||
try:
|
try:
|
||||||
isplatform = hasattr(
|
isplatform = hasattr(
|
||||||
cls.load_module(name, path),
|
cls.load_module(type_, path),
|
||||||
cls.get_clsname(name)
|
cls.get_clsname(type_)
|
||||||
)
|
)
|
||||||
if isplatform:
|
if isplatform:
|
||||||
platforms[name] = path
|
platforms[type_] = path
|
||||||
except exception.UnknownPlatform:
|
except exception.UnknownPlatform:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -139,20 +139,20 @@ class PlatformFactory(object):
|
|||||||
return platforms
|
return platforms
|
||||||
|
|
||||||
installed_platforms = {}
|
installed_platforms = {}
|
||||||
for name in get_state_item("installed_platforms", []):
|
for type_ in get_state_item("installed_platforms", []):
|
||||||
if name in platforms:
|
if type_ in platforms:
|
||||||
installed_platforms[name] = platforms[name]
|
installed_platforms[type_] = platforms[type_]
|
||||||
return installed_platforms
|
return installed_platforms
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def newPlatform(cls, name):
|
def newPlatform(cls, type_):
|
||||||
platforms = cls.get_platforms()
|
platforms = cls.get_platforms()
|
||||||
if name not in platforms:
|
if type_ not in platforms:
|
||||||
raise exception.UnknownPlatform(name)
|
raise exception.UnknownPlatform(type_)
|
||||||
|
|
||||||
_instance = getattr(
|
_instance = getattr(
|
||||||
cls.load_module(name, platforms[name]),
|
cls.load_module(type_, platforms[type_]),
|
||||||
cls.get_clsname(name)
|
cls.get_clsname(type_)
|
||||||
)()
|
)()
|
||||||
assert isinstance(_instance, BasePlatform)
|
assert isinstance(_instance, BasePlatform)
|
||||||
return _instance
|
return _instance
|
||||||
@ -166,12 +166,15 @@ class BasePlatform(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._found_error = False
|
self._found_error = False
|
||||||
|
|
||||||
def get_name(self):
|
def get_type(self):
|
||||||
return self.__class__.__name__[:-8].lower()
|
return self.__class__.__name__[:-8].lower()
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return self.get_type().title()
|
||||||
|
|
||||||
def get_build_script(self):
|
def get_build_script(self):
|
||||||
builtin = join(util.get_source_dir(), "builder", "scripts", "%s.py" %
|
builtin = join(util.get_source_dir(), "builder", "scripts", "%s.py" %
|
||||||
self.get_name())
|
self.get_type())
|
||||||
if isfile(builtin):
|
if isfile(builtin):
|
||||||
return builtin
|
return builtin
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
@ -235,14 +238,14 @@ class BasePlatform(object):
|
|||||||
|
|
||||||
# register installed platform
|
# register installed platform
|
||||||
data = get_state_item("installed_platforms", [])
|
data = get_state_item("installed_platforms", [])
|
||||||
if self.get_name() not in data:
|
if self.get_type() not in data:
|
||||||
data.append(self.get_name())
|
data.append(self.get_type())
|
||||||
set_state_item("installed_platforms", data)
|
set_state_item("installed_platforms", data)
|
||||||
|
|
||||||
return len(requirements)
|
return len(requirements)
|
||||||
|
|
||||||
def uninstall(self):
|
def uninstall(self):
|
||||||
platform = self.get_name()
|
platform = self.get_type()
|
||||||
installed_platforms = PlatformFactory.get_platforms(
|
installed_platforms = PlatformFactory.get_platforms(
|
||||||
installed=True).keys()
|
installed=True).keys()
|
||||||
|
|
||||||
@ -286,8 +289,8 @@ class BasePlatform(object):
|
|||||||
installed=True).keys()
|
installed=True).keys()
|
||||||
installed_packages = PackageManager.get_installed()
|
installed_packages = PackageManager.get_installed()
|
||||||
|
|
||||||
if self.get_name() not in installed_platforms:
|
if self.get_type() not in installed_platforms:
|
||||||
raise exception.PlatformNotInstalledYet(self.get_name())
|
raise exception.PlatformNotInstalledYet(self.get_type())
|
||||||
|
|
||||||
if "clean" in targets:
|
if "clean" in targets:
|
||||||
targets.remove("clean")
|
targets.remove("clean")
|
||||||
|
@ -26,3 +26,6 @@ class FreescalekinetisPlatform(BasePlatform):
|
|||||||
"default": True
|
"default": True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "Freescale Kinetis"
|
||||||
|
@ -28,3 +28,6 @@ class Nordicnrf51Platform(BasePlatform):
|
|||||||
"default": True
|
"default": True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "Nordic nRF51"
|
||||||
|
@ -28,3 +28,6 @@ class NxplpcPlatform(BasePlatform):
|
|||||||
"default": True
|
"default": True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "NXP LPC"
|
||||||
|
@ -49,3 +49,6 @@ class Ststm32Platform(BasePlatform):
|
|||||||
"default": True
|
"default": True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "ST STM32"
|
||||||
|
@ -41,6 +41,9 @@ class TeensyPlatform(BasePlatform):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "Teensy"
|
||||||
|
|
||||||
def run(self, variables, targets):
|
def run(self, variables, targets):
|
||||||
for v in variables:
|
for v in variables:
|
||||||
if "BOARD=" not in v:
|
if "BOARD=" not in v:
|
||||||
|
@ -31,3 +31,6 @@ class Timsp430Platform(BasePlatform):
|
|||||||
"default": True
|
"default": True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "TI MSP430"
|
||||||
|
@ -39,3 +39,6 @@ class TitivaPlatform(BasePlatform):
|
|||||||
"default": True
|
"default": True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return "TI TIVA"
|
||||||
|
@ -34,9 +34,9 @@ def test_board_options(platformio_setup, clirunner, validate_cliresult):
|
|||||||
search_result = json.loads(result.output)
|
search_result = json.loads(result.output)
|
||||||
assert isinstance(search_result, list)
|
assert isinstance(search_result, list)
|
||||||
assert len(search_result)
|
assert len(search_result)
|
||||||
platforms = [item['name'] for item in search_result]
|
platforms = [item['type'] for item in search_result]
|
||||||
|
|
||||||
for name, opts in util.get_boards().iteritems():
|
for _, opts in util.get_boards().iteritems():
|
||||||
assert required_opts.issubset(set(opts))
|
assert required_opts.issubset(set(opts))
|
||||||
assert opts['platform'] in platforms
|
assert opts['platform'] in platforms
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ def test_search_json_output(clirunner, validate_cliresult):
|
|||||||
search_result = json.loads(result.output)
|
search_result = json.loads(result.output)
|
||||||
assert isinstance(search_result, list)
|
assert isinstance(search_result, list)
|
||||||
assert len(search_result)
|
assert len(search_result)
|
||||||
platforms = [item['name'] for item in search_result]
|
platforms = [item['type'] for item in search_result]
|
||||||
assert "atmelsam" in platforms
|
assert "atmelsam" in platforms
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user