Commit 01c4b4d8 authored by Seblu's avatar Seblu
Browse files

Alias now use OptionCOmmand

parent 2672fc83
Loading
Loading
Loading
Loading
+41 −23
Original line number Diff line number Diff line
@@ -6,39 +6,57 @@ CloudControl alias related command
'''

from cccli.exception import *
from cccli.command.command import Command
from cccli.command.command import OptionCommand
import re

class Command_alias(Command):
class Command_alias(OptionCommand):
    '''Show or create alias'''

    def __init__(self, cli, argv0):
        OptionCommand.__init__(self, cli, argv0)
        self.set_usage("%prog [options] [name] [value]")

    def __call__(self, argv):
        if len(argv) == 1:
            for n, v in self.cli.alias.items():
                self.printer.out("%s=%s"%(n, v))
        elif len(argv) == 2:
            if argv[1] not in self.cli.alias:
                raise cmdBadArgument(argv[1])
            self.printer.out("%s=%s"%(argv[1], self.cli.alias[argv[1]]))
        elif len(argv) == 3:
            self.cli.alias[argv[1]] = argv[2]
            self.cli.alias.save(self.cli.settings.get("alias", ""))
        # args parse
        self.parse_args(argv)
        _value = None
        if len(self.args) == 0:
            _alias = self.cli.alias.keys()
        elif len(self.args) == 1:
            _alias = self.args[0]
        elif len(self.args) == 2:
            _alias = self.args[0]
            _value = self.args[1]
        else:
            raise cmdBadArgument()

    def usage(self):
         return "Usage: alias [name] [value]"
        # printing
        if _value is None:
            for a in _alias:
                if a in self.cli.alias:
                    self.printer.out("%s \"%s\""%(a, re.sub("\"", "\\\"", self.cli.alias[a])))
                else:
                    self.printer.warn("No alias %s"%a)
        # editing
        else:
            self.cli.alias[_alias] = _value
            self.cli.alias.save(self.cli.settings.get("alias", ""))


class Command_unalias(Command):
class Command_unalias(OptionCommand):
    '''Remove an alias'''

    def __init__(self, cli, argv0):
        OptionCommand.__init__(self, cli, argv0)
        self.set_usage("%prog [options] [name]")

    def __call__(self, argv):
        if len(argv) != 2:
        # parse args
        self.parse_args(argv)
        if len(self.args) != 1:
            raise cmdBadArgument()
        if argv[1] not in self.cli.alias:
            raise cmdBadArgument("%s: No such alias"%argv[1])
        del self.cli.alias[argv[1]]
        # check alias existance
        if self.args[0] not in self.cli.alias:
            raise cmdBadArgument("%s: No such alias"%self.args[0])
        # deleting aliases
        del self.cli.alias[self.args[0]]
        self.cli.alias.save(self.cli.settings.get("alias", ""))

    def usage(self):
        return "Usage: unalias [name]"