diff --git a/HISTORY.rst b/HISTORY.rst index 1d50de3e..68da21a9 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,11 +4,19 @@ Release History 0.10.1 (?) ---------- -* Fixed missing auto-uploading by default within `platformio init `__ +* Added ``--json-output`` option to + `platformio list `__, + `platformio serialports list `__ and + `platformio lib list `__ + commands which allows to return the output in `JSON `_ format + (`issue #42 `_) +* Fixed missing auto-uploading by default after `platformio init `__ command -0.10.0 (2015-01-01) Happy New Year! ------------------------------------ +0.10.0 (2015-01-01) +------------------- + +**Happy New Year!** * Implemented `platformio boards `_ command (`issue #11 `_) diff --git a/docs/quickstart.rst b/docs/quickstart.rst index a827406b..2d19807f 100644 --- a/docs/quickstart.rst +++ b/docs/quickstart.rst @@ -9,7 +9,8 @@ Quickstart 1. :ref:`Install PlatformIO `. -2. Find board ``type`` from :ref:`platforms` or via :ref:`cmd_boards` command. +2. Find board ``type`` on this :ref:`Embedded Boards ` page or + via :ref:`cmd_boards` command. 3. Initialize new PlatformIO based project with the pre-configured environments for your boards: diff --git a/docs/userguide/cmd_list.rst b/docs/userguide/cmd_list.rst index 91ccf3d4..bbbf7197 100644 --- a/docs/userguide/cmd_list.rst +++ b/docs/userguide/cmd_list.rst @@ -10,7 +10,7 @@ Usage .. code-block:: bash - platformio list + platformio list [OPTIONS] Description @@ -18,6 +18,13 @@ Description List installed :ref:`Platforms ` +Options +~~~~~~~ + +.. option:: + --json-output + +Return the output in `JSON `_ format Examples -------- diff --git a/docs/userguide/cmd_serialports.rst b/docs/userguide/cmd_serialports.rst index 83e476d8..612429b3 100644 --- a/docs/userguide/cmd_serialports.rst +++ b/docs/userguide/cmd_serialports.rst @@ -13,7 +13,7 @@ Usage .. code-block:: bash - platformio serialports list + platformio serialports list [OPTIONS] Description @@ -21,6 +21,14 @@ Description List available `Serial Ports `_ +Options +~~~~~~~ + +.. option:: + --json-output + +Return the output in `JSON `_ format + Examples ~~~~~~~~ diff --git a/docs/userguide/lib/cmd_list.rst b/docs/userguide/lib/cmd_list.rst index 5ab7e0dc..2551704b 100644 --- a/docs/userguide/lib/cmd_list.rst +++ b/docs/userguide/lib/cmd_list.rst @@ -10,7 +10,7 @@ Usage .. code-block:: bash - platformio lib list + platformio lib list [OPTIONS] Description @@ -18,6 +18,13 @@ Description List installed libraries +Options +~~~~~~~ + +.. option:: + --json-output + +Return the output in `JSON `_ format Examples -------- diff --git a/platformio/commands/init.py b/platformio/commands/init.py index bef4c690..f81cf5e4 100644 --- a/platformio/commands/init.py +++ b/platformio/commands/init.py @@ -17,7 +17,7 @@ from platformio.util import get_boards, get_source_dir type=click.Path(exists=True, file_okay=False, dir_okay=True, writable=True, resolve_path=True)) @click.option("--board", "-b", multiple=True, metavar="TYPE") -@click.option('--disable-auto-uploading', is_flag=True) +@click.option("--disable-auto-uploading", is_flag=True) def cli(project_dir, board, disable_auto_uploading): project_file = join(project_dir, "platformio.ini") diff --git a/platformio/commands/lib.py b/platformio/commands/lib.py index 1c4bebde..f3b87445 100644 --- a/platformio/commands/lib.py +++ b/platformio/commands/lib.py @@ -154,9 +154,15 @@ def lib_uninstall(libid): @cli.command("list", short_help="List installed libraries") -def lib_list(): +@click.option("--json-output", is_flag=True) +def lib_list(json_output): lm = LibraryManager(get_lib_dir()) items = lm.get_installed().values() + + if json_output: + click.echo(items) + return + if not items: return diff --git a/platformio/commands/list.py b/platformio/commands/list.py index ed7ffad2..3520d2ad 100644 --- a/platformio/commands/list.py +++ b/platformio/commands/list.py @@ -7,15 +7,26 @@ from platformio.platforms.base import PlatformFactory @click.command("list", short_help="List installed platforms") -def cli(): +@click.option("--json-output", is_flag=True) +def cli(json_output): installed_platforms = PlatformFactory.get_platforms( installed=True).keys() installed_platforms.sort() + data = [] for platform in installed_platforms: p = PlatformFactory.newPlatform(platform) - click.echo("{name:<20} with packages: {pkgs}".format( - name=click.style(p.get_name(), fg="cyan"), - pkgs=", ".join(p.get_installed_packages()) - )) + data.append({ + "name": platform, + "packages": p.get_installed_packages() + }) + + if json_output: + click.echo(data) + else: + for item in data: + click.echo("{name:<20} with packages: {pkgs}".format( + name=click.style(item['name'], fg="cyan"), + pkgs=", ".join(item['packages']) + )) diff --git a/platformio/commands/serialports.py b/platformio/commands/serialports.py index d75eba85..d62d9482 100644 --- a/platformio/commands/serialports.py +++ b/platformio/commands/serialports.py @@ -15,7 +15,12 @@ def cli(): @cli.command("list", short_help="List Serial ports") -def serialports_list(): +@click.option("--json-output", is_flag=True) +def serialports_list(json_output): + + if json_output: + click.echo(get_serialports()) + return for item in get_serialports(): click.secho(item['port'], fg="cyan")