From 01c4b4d896fc27439c10697754aa05f03f3b4d14 Mon Sep 17 00:00:00 2001
From: Seblu <sebastien.luttringer@smartjog.com>
Date: Mon, 14 Feb 2011 13:00:13 +0100
Subject: [PATCH] Alias now use OptionCOmmand

---
 cccli/command/alias.py | 64 +++++++++++++++++++++++++++---------------
 1 file changed, 41 insertions(+), 23 deletions(-)

diff --git a/cccli/command/alias.py b/cccli/command/alias.py
index f39163f..3b30d04 100644
--- a/cccli/command/alias.py
+++ b/cccli/command/alias.py
@@ -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]"
-- 
GitLab