aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/command/alias.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/command/alias.py')
-rwxr-xr-xsetuptools/command/alias.py69
1 files changed, 56 insertions, 13 deletions
diff --git a/setuptools/command/alias.py b/setuptools/command/alias.py
index 76daae7f..b184589f 100755
--- a/setuptools/command/alias.py
+++ b/setuptools/command/alias.py
@@ -3,37 +3,80 @@ from setuptools import Command
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
+
+