From 41c69797f2b4b7cc04b4b6e0441e9fa878c82d9c Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 5 Oct 2016 01:23:50 +0300 Subject: [PATCH] Fix handler for renamed commands --- platformio/__init__.py | 2 +- platformio/__main__.py | 26 ++++++++++++++++---------- platformio/telemetry.py | 3 ++- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/platformio/__init__.py b/platformio/__init__.py index 5ada381a..c44efb15 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -14,7 +14,7 @@ import sys -VERSION = (3, 2, "0a1") +VERSION = (3, 2, "0a2") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/__main__.py b/platformio/__main__.py index f59db334..05486bf0 100644 --- a/platformio/__main__.py +++ b/platformio/__main__.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys from os import getenv, listdir from os.path import join from platform import system +from sys import exit as sys_exit from traceback import format_exc import click @@ -43,9 +43,22 @@ class PlatformioCLI(click.MultiCommand): # pylint: disable=R0904 mod = __import__("platformio.commands." + name, None, None, ["cli"]) except ImportError: - raise click.UsageError('No such command "%s"' % name, ctx) + try: + return self._handle_obsolate_command(name) + except AttributeError: + raise click.UsageError('No such command "%s"' % name, ctx) return mod.cli + @staticmethod + def _handle_obsolate_command(name): + if name == "platforms": + from platformio.commands import platform + return platform.cli + elif name == "serialports": + from platformio.commands import device + return device.cli + raise AttributeError() + @click.command( cls=PlatformioCLI, @@ -90,13 +103,6 @@ def main(): except: # pylint: disable=bare-except pass - # renamed commands - if len(sys.argv) > 1: - if sys.argv[1] == "platforms": - sys.argv[1] = "platform" - if sys.argv[1] == "serialports": - sys.argv[1] = "device" - cli(None, None, None) except Exception as e: # pylint: disable=W0703 if not isinstance(e, exception.ReturnErrorCode): @@ -128,4 +134,4 @@ An unexpected error occurred. Further steps: if __name__ == "__main__": - sys.exit(main()) + sys_exit(main()) diff --git a/platformio/telemetry.py b/platformio/telemetry.py index 535ee5be..6d7d2a95 100644 --- a/platformio/telemetry.py +++ b/platformio/telemetry.py @@ -111,7 +111,8 @@ class MeasurementProtocol(TelemetryBase): if not args: return cmd_path = args[:1] - if args[0] in ("lib", "platform", "device", "settings", "remote"): + if args[0] in ("lib", "platform", "platforms", "serialports", "device", + "settings", "remote"): cmd_path = args[:2] if args[0] == "remote": if len(args) > 2 and args[1] in ("agent", "device"):