From 41093b1cd1e4405a8f5a89df0729b84b432d9d07 Mon Sep 17 00:00:00 2001
From: Seblu <sebastien.luttringer@smartjog.com>
Date: Mon, 14 Feb 2011 20:06:17 +0100
Subject: [PATCH] Aliases remplace Aliase

---
 cccli/cli.py           | 16 ++++++++--------
 cccli/command/alias.py | 22 ++++++++++++++--------
 cccli/commands.py      | 11 ++++-------
 3 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/cccli/cli.py b/cccli/cli.py
index 0329d6a..b9877e5 100644
--- a/cccli/cli.py
+++ b/cccli/cli.py
@@ -9,7 +9,7 @@ CloudControl CLI main module
 import cccli
 from cccli.exception import *
 from cccli.printer import Printer, color
-from cccli.commands import Commands, Alias
+from cccli.commands import Commands, Aliases
 from cccli.handler import CliHandler
 from cccli.tagdisplay import TagDisplay
 from sjrpc.core.exceptions import *
@@ -27,7 +27,7 @@ class Cli(object):
     def __init__(self, settings):
         self.settings = settings
         self.rpc = None
-        self.alias = Alias()
+        self.aliases = Aliases()
         self.tagdisplay = TagDisplay()
         self.prompt = ""
 
@@ -59,8 +59,8 @@ class Cli(object):
         self.commands = Commands(self)
         self.printer.debug("Loaded commands: %d"%len(self.commands))
         # load alias
-        self.alias.load(self.settings.get("alias", ""))
-        self.printer.debug("Loaded aliases: %d"%len(self.alias))
+        self.aliases.load(self.settings.get("alias", None))
+        self.printer.debug("Loaded aliases: %d"%len(self.aliases))
         # load tagdisplay
         self.tagdisplay.load(self.settings.get("tagdisplay", ""))
         # connecting
@@ -111,9 +111,9 @@ class Cli(object):
                 if len(argv) == 0:
                     continue
                 # alias subsitution
-                if argv[0] in self.alias:
+                if argv[0] in self.aliases:
                     oldargv = argv[1:]
-                    argv = shlex.split(self.alias[argv[0]])
+                    argv = shlex.split(self.aliases[argv[0]])
                     argv.extend(oldargv)
                 self._exec_command(argv)
             except KeyboardInterrupt:
@@ -177,5 +177,5 @@ class Cli(object):
         if len(texte) > 0 and texte[0] == "!":
             return ()
         if len(texte) > 0 and texte[0] == "?":
-            return [ "?%s"%c for c in  list(self.commands) + self.alias.keys() if c.startswith(texte[1:]) ]
-        return [ c for c in  list(self.commands) + self.alias.keys() if c.startswith(texte) ]
+            return [ "?%s"%c for c in  list(self.commands) + self.aliases.keys() if c.startswith(texte[1:]) ]
+        return [ c for c in  list(self.commands) + self.aliases.keys() if c.startswith(texte) ]
diff --git a/cccli/command/alias.py b/cccli/command/alias.py
index b22b0b0..a41da61 100644
--- a/cccli/command/alias.py
+++ b/cccli/command/alias.py
@@ -21,7 +21,7 @@ class Command_alias(OptionCommand):
         self.parse_args(argv)
         _value = None
         if len(self.args) == 0:
-            _alias = self.cli.alias.keys()
+            _alias = self.cli.aliases.keys()
         elif len(self.args) == 1:
             _alias = [ self.args[0] ]
         elif len(self.args) == 2:
@@ -32,14 +32,17 @@ class Command_alias(OptionCommand):
         # 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])))
+                if a in self.cli.aliases:
+                    self.printer.out("%s \"%s\""%(a, re.sub("\"", "\\\"", self.cli.aliases[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", ""))
+            self.cli.aliases[_alias] = _value
+            try:
+                self.cli.aliases.save(self.cli.settings.get("alias", None))
+            except Exception as e:
+                raise cmdError(e)
 
 
 class Command_unalias(OptionCommand):
@@ -55,8 +58,11 @@ class Command_unalias(OptionCommand):
         if len(self.args) != 1:
             raise cmdBadArgument()
         # check alias existance
-        if self.args[0] not in self.cli.alias:
+        if self.args[0] not in self.cli.aliases:
             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", ""))
+        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)
diff --git a/cccli/commands.py b/cccli/commands.py
index a8825b3..39c37eb 100644
--- a/cccli/commands.py
+++ b/cccli/commands.py
@@ -59,11 +59,11 @@ class Commands(object):
         h = self.cmds[argv0](self.cli, argv0).help()
         return h if h is not None else ""
 
-class Alias(dict):
-    ''' Alias wrapper'''
+class Aliases(dict):
+    ''' Aliases manager'''
     def load(self, filename):
         '''load alias from file'''
-        if os.access(filename, os.R_OK):
+        if filename is not None:
             fparser = ConfigParser.RawConfigParser()
             fparser.read(filename)
             if fparser.has_section("alias"):
@@ -72,7 +72,7 @@ class Alias(dict):
 
     def save(self, filename):
         '''save alias on file'''
-        if os.access(filename, os.R_OK or os.W_OK):
+        if filename is not None:
             fparser = ConfigParser.RawConfigParser()
             fparser.read(filename)
             fparser.remove_section("alias")
@@ -80,6 +80,3 @@ class Alias(dict):
             for n,v in self.items():
                 fparser.set("alias", n, v)
             fparser.write(open(filename, "w"))
-
-
-
-- 
GitLab