Fix handler for renamed commands

This commit is contained in:
Ivan Kravets
2016-10-05 01:23:50 +03:00
parent b708653c26
commit 41c69797f2
3 changed files with 19 additions and 12 deletions

View File

@ -14,7 +14,7 @@
import sys
VERSION = (3, 2, "0a1")
VERSION = (3, 2, "0a2")
__version__ = ".".join([str(s) for s in VERSION])
__title__ = "platformio"

View File

@ -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())

View File

@ -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"):