]> git.rkrishnan.org Git - tahoe-lafs/zfec.git/blob - zfec/setuptools-0.6c16dev3.egg/setuptools/command/alias.py
stick a .gitignore file
[tahoe-lafs/zfec.git] / zfec / setuptools-0.6c16dev3.egg / setuptools / command / alias.py
1 import distutils, os
2 from setuptools import Command
3 from distutils.util import convert_path
4 from distutils import log
5 from distutils.errors import *
6 from setuptools.command.setopt import edit_config, option_base, config_file
7
8 def shquote(arg):
9     """Quote an argument for later parsing by shlex.split()"""
10     for c in '"', "'", "\\", "#":
11         if c in arg: return repr(arg)
12     if arg.split()!=[arg]:
13         return repr(arg)
14     return arg
15
16
17 class alias(option_base):
18     """Define a shortcut that invokes one or more commands"""
19
20     description = "define a shortcut to invoke one or more commands"
21     command_consumes_arguments = True
22
23     user_options = [
24         ('remove',   'r', 'remove (unset) the alias'),
25     ] + option_base.user_options
26
27     boolean_options = option_base.boolean_options + ['remove']
28
29     def initialize_options(self):
30         option_base.initialize_options(self)
31         self.args = None
32         self.remove = None
33
34     def finalize_options(self):
35         option_base.finalize_options(self)
36         if self.remove and len(self.args)!=1:
37             raise DistutilsOptionError(
38                 "Must specify exactly one argument (the alias name) when "
39                 "using --remove"
40             )
41
42     def run(self):
43         aliases = self.distribution.get_option_dict('aliases')
44
45         if not self.args:
46             print "Command Aliases"
47             print "---------------"
48             for alias in aliases:
49                 print "setup.py alias", format_alias(alias, aliases)
50             return
51
52         elif len(self.args)==1:
53             alias, = self.args
54             if self.remove:
55                 command = None
56             elif alias in aliases:
57                 print "setup.py alias", format_alias(alias, aliases)
58                 return
59             else:
60                 print "No alias definition found for %r" % alias
61                 return
62         else:
63             alias = self.args[0]
64             command = ' '.join(map(shquote,self.args[1:]))
65
66         edit_config(self.filename, {'aliases': {alias:command}}, self.dry_run)
67
68
69 def format_alias(name, aliases):
70     source, command = aliases[name]
71     if source == config_file('global'):
72         source = '--global-config '
73     elif source == config_file('user'):
74         source = '--user-config '
75     elif source == config_file('local'):
76         source = ''
77     else:
78         source = '--filename=%r' % source
79     return source+name+' '+command