Skip to content
Snippets Groups Projects
alias.py 1.98 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:
Seblu's avatar
Seblu committed
            _alias = self.cli.aliases.keys()
Seblu's avatar
Seblu committed
        elif len(self.args) == 1:
Seblu's avatar
Seblu committed
            _alias = [ self.args[0] ]
Seblu's avatar
Seblu committed
        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:
Seblu's avatar
Seblu committed
                if a in self.cli.aliases:
                    self.printer.out("%s \"%s\""%(a, re.sub("\"", "\\\"", self.cli.aliases[a])))
Seblu's avatar
Seblu committed
                else:
                    self.printer.warn("No alias %s"%a)
        # editing
        else:
Seblu's avatar
Seblu committed
            self.cli.aliases[_alias] = _value
            try:
                self.cli.aliases.save(self.cli.settings.get("alias", None))
            except Exception as e:
                raise cmdError(e)
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
Seblu's avatar
Seblu committed
        if self.args[0] not in self.cli.aliases:
Seblu's avatar
Seblu committed
            raise cmdBadArgument("%s: No such alias"%self.args[0])
        # deleting aliases
Seblu's avatar
Seblu committed
        del self.cli.aliases[self.args[0]]
        try:
            self.cli.aliases.save(self.cli.settings.get("alias", None))
        except Exception as e:
            raise cmdError(e)