Skip to content
Snippets Groups Projects
alias.py 1.79 KiB
Newer Older
Seblu's avatar
Seblu committed
#!/usr/bin/env python
#coding=utf8

'''
CloudControl alias related command
'''

from cccli.exception import *
Seblu's avatar
Seblu committed
from cccli.command.command import OptionCommand
import re
Seblu's avatar
Seblu committed

Seblu's avatar
Seblu committed
class Command_alias(OptionCommand):
Seblu's avatar
Seblu committed
    '''Show or create alias'''
Seblu's avatar
Seblu committed
    def __init__(self, cli, argv0):
        OptionCommand.__init__(self, cli, argv0)
        self.set_usage("%prog [options] [name] [value]")

Seblu's avatar
Seblu committed
    def __call__(self, argv):
Seblu's avatar
Seblu committed
        # 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]
Seblu's avatar
Seblu committed
        else:
            raise cmdBadArgument()
Seblu's avatar
Seblu committed
        # 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", ""))
Seblu's avatar
Seblu committed

Seblu's avatar
Seblu committed
class Command_unalias(OptionCommand):
Seblu's avatar
Seblu committed
    '''Remove an alias'''
Seblu's avatar
Seblu committed
    def __init__(self, cli, argv0):
        OptionCommand.__init__(self, cli, argv0)
        self.set_usage("%prog [options] [name]")

Seblu's avatar
Seblu committed
    def __call__(self, argv):
Seblu's avatar
Seblu committed
        # parse args
        self.parse_args(argv)
        if len(self.args) != 1:
Seblu's avatar
Seblu committed
            raise cmdBadArgument()
Seblu's avatar
Seblu committed
        # 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]]
Seblu's avatar
Seblu committed
        self.cli.alias.save(self.cli.settings.get("alias", ""))