summaryrefslogtreecommitdiffstats
path: root/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'main.py')
-rwxr-xr-xmain.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/main.py b/main.py
index 2422e8be..06cd1108 100755
--- a/main.py
+++ b/main.py
@@ -26,6 +26,7 @@ import getpass
26import netrc 26import netrc
27import optparse 27import optparse
28import os 28import os
29import shlex
29import sys 30import sys
30import textwrap 31import textwrap
31import time 32import time
@@ -48,7 +49,7 @@ from color import SetDefaultColoring
48import event_log 49import event_log
49from repo_trace import SetTrace 50from repo_trace import SetTrace
50from git_command import user_agent 51from git_command import user_agent
51from git_config import init_ssh, close_ssh 52from git_config import init_ssh, close_ssh, RepoConfig
52from command import InteractiveCommand 53from command import InteractiveCommand
53from command import MirrorSafeCommand 54from command import MirrorSafeCommand
54from command import GitcAvailableCommand, GitcClientCommand 55from command import GitcAvailableCommand, GitcClientCommand
@@ -155,6 +156,9 @@ class _Repo(object):
155 argv = [] 156 argv = []
156 gopts, _gargs = global_options.parse_args(glob) 157 gopts, _gargs = global_options.parse_args(glob)
157 158
159 name, alias_args = self._ExpandAlias(name)
160 argv = alias_args + argv
161
158 if gopts.help: 162 if gopts.help:
159 global_options.print_help() 163 global_options.print_help()
160 commands = ' '.join(sorted(self.commands)) 164 commands = ' '.join(sorted(self.commands))
@@ -165,6 +169,27 @@ class _Repo(object):
165 169
166 return (name, gopts, argv) 170 return (name, gopts, argv)
167 171
172 def _ExpandAlias(self, name):
173 """Look up user registered aliases."""
174 # We don't resolve aliases for existing subcommands. This matches git.
175 if name in self.commands:
176 return name, []
177
178 key = 'alias.%s' % (name,)
179 alias = RepoConfig.ForRepository(self.repodir).GetString(key)
180 if alias is None:
181 alias = RepoConfig.ForUser().GetString(key)
182 if alias is None:
183 return name, []
184
185 args = alias.strip().split(' ', 1)
186 name = args[0]
187 if len(args) == 2:
188 args = shlex.split(args[1])
189 else:
190 args = []
191 return name, args
192
168 def _Run(self, name, gopts, argv): 193 def _Run(self, name, gopts, argv):
169 """Execute the requested subcommand.""" 194 """Execute the requested subcommand."""
170 result = 0 195 result = 0