2014-06-12 23:29:47 +03:00
|
|
|
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
|
|
|
|
# See LICENSE for details.
|
|
|
|
|
|
2015-02-19 19:16:46 +02:00
|
|
|
import json
|
|
|
|
|
|
2014-12-03 20:16:50 +02:00
|
|
|
import click
|
2014-06-12 23:29:47 +03:00
|
|
|
|
2014-07-30 22:40:11 +03:00
|
|
|
from platformio.platforms.base import PlatformFactory
|
2014-06-12 23:29:47 +03:00
|
|
|
|
|
|
|
|
|
2014-12-03 20:16:50 +02:00
|
|
|
@click.command("search", short_help="Search for development platforms")
|
|
|
|
|
@click.argument("query", required=False)
|
2015-02-19 19:16:46 +02:00
|
|
|
@click.option("--json-output", is_flag=True)
|
|
|
|
|
def cli(query, json_output):
|
|
|
|
|
|
|
|
|
|
data = []
|
|
|
|
|
platforms = PlatformFactory.get_platforms().keys()
|
|
|
|
|
platforms.sort()
|
|
|
|
|
for platform in platforms:
|
2014-12-03 20:16:50 +02:00
|
|
|
p = PlatformFactory.newPlatform(platform)
|
2014-06-12 23:29:47 +03:00
|
|
|
name = p.get_name()
|
2015-02-19 19:16:46 +02:00
|
|
|
info = p.get_short_info()
|
2014-06-12 23:29:47 +03:00
|
|
|
|
2014-11-22 23:55:17 +02:00
|
|
|
if query == "all":
|
|
|
|
|
query = ""
|
|
|
|
|
|
2015-03-13 18:50:04 +02:00
|
|
|
search_data = "%s %s %s" % (name, info, p.get_packages())
|
2014-11-22 23:55:17 +02:00
|
|
|
if query and query.lower() not in search_data.lower():
|
2014-06-12 23:29:47 +03:00
|
|
|
continue
|
|
|
|
|
|
2015-02-19 19:16:46 +02:00
|
|
|
data.append({
|
|
|
|
|
"name": name,
|
2015-03-13 18:50:04 +02:00
|
|
|
"info": info,
|
|
|
|
|
"packages": p.get_packages()
|
2015-02-19 19:16:46 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if json_output:
|
|
|
|
|
click.echo(json.dumps(data))
|
|
|
|
|
else:
|
|
|
|
|
for item in data:
|
2015-03-13 18:50:04 +02:00
|
|
|
click.secho(item['name'], fg="cyan", nl=False)
|
|
|
|
|
click.echo(" (available packages: %s)" % ", ".join(
|
|
|
|
|
p.get_packages().keys()))
|
|
|
|
|
click.secho("-" * len(item['name']), fg="cyan")
|
|
|
|
|
click.echo(item['info'])
|
|
|
|
|
click.echo()
|