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