[Python-checkins] python/nondist/sandbox/setuptools/setuptools/command alias.py, 1.2, 1.3

pje@users.sourceforge.net pje at users.sourceforge.net
Fri Jul 8 17:11:26 CEST 2005


Update of /cvsroot/python/python/nondist/sandbox/setuptools/setuptools/command
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2382/setuptools/command

Modified Files:
	alias.py 
Log Message:
Restructured the 'alias' command to take arguments instead of options, and
to display the definition of the named alias or of all aliases.


Index: alias.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setuptools/setuptools/command/alias.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- alias.py	8 Jul 2005 05:11:20 -0000	1.2
+++ alias.py	8 Jul 2005 15:11:19 -0000	1.3
@@ -3,37 +3,80 @@
 from distutils.util import convert_path
 from distutils import log
 from distutils.errors import *
-from setuptools.command.setopt import edit_config, option_base
+from setuptools.command.setopt import edit_config, option_base, config_file
 
 class alias(option_base):
     """Define a shortcut that invokes one or more commands"""
     
     description = "define a shortcut to invoke one or more commands"
+    command_consumes_arguments = True
 
     user_options = [
-        ('alias=',  'a',  'the name of the new pseudo-command'),
-        ('command=', 'c', 'command(s) and options to invoke when used'),
         ('remove',   'r', 'remove (unset) the alias'), 
     ] + option_base.user_options
 
     boolean_options = option_base.boolean_options + ['remove']
 
+
     def initialize_options(self):
         option_base.initialize_options(self)
-        self.alias = None
-        self.command = None
+        self.args = None
         self.remove = None
 
+
     def finalize_options(self):
         option_base.finalize_options(self)
-        if self.alias is None:
-            raise DistutilsOptionError("Must specify name (--alias/-a)")
-        if self.command is None and not self.remove:
-            raise DistutilsOptionError("Must specify --command or --remove")
+        if self.remove and len(self.args)<>1:
+            raise DistutilsOptionError(
+                "Must specify exactly one argument (the alias name) when "
+                "using --remove"
+            )
+
+
+
+
+
+
+
 
     def run(self):
-        edit_config(
-            self.filename, {'aliases': {self.alias:self.command}},
-            self.dry_run
-        )
+        aliases = self.distribution.get_option_dict('aliases')
+
+        if not self.args:
+            print "Command Aliases"
+            print "---------------"
+            for alias in aliases:
+                print "setup.py alias", format_alias(alias, aliases)
+            return
+
+        elif len(self.args)==1:
+            alias, = self.args
+            if self.remove:
+                command = None
+            elif alias in aliases:
+                print "setup.py alias", format_alias(alias, aliases)
+                return
+            else:
+                print "No alias definition found for %r" % alias
+                return
+        else:
+            alias = self.args[0]
+            command = ' '.join(map(repr,self.args[1:]))
+
+        edit_config(self.filename, {'aliases': {alias:command}}, self.dry_run)
+
+
+def format_alias(name, aliases):
+    source, command = aliases[name]
+    if source == config_file('global'):
+        source = '--global-config '
+    elif source == config_file('user'):
+        source = '--user-config '
+    elif source == config_file('local'):
+        source = ''
+    else:
+        source = '--filename=%r' % source
+    return source+name+' '+command
+            
+
 



More information about the Python-checkins mailing list