summaryrefslogtreecommitdiffstats
path: root/repo
diff options
context:
space:
mode:
Diffstat (limited to 'repo')
-rwxr-xr-xrepo43
1 files changed, 43 insertions, 0 deletions
diff --git a/repo b/repo
index 77e80284..77a3f8d3 100755
--- a/repo
+++ b/repo
@@ -13,6 +13,7 @@ from __future__ import print_function
13import datetime 13import datetime
14import os 14import os
15import platform 15import platform
16import shlex
16import subprocess 17import subprocess
17import sys 18import sys
18 19
@@ -693,6 +694,24 @@ def _SetConfig(cwd, name, value):
693 run_git('config', name, value, cwd=cwd) 694 run_git('config', name, value, cwd=cwd)
694 695
695 696
697def _GetRepoConfig(name):
698 """Read a repo configuration option."""
699 config = os.path.join(home_dot_repo, 'config')
700 if not os.path.exists(config):
701 return None
702
703 cmd = ['config', '--file', config, '--get', name]
704 ret = run_git(*cmd, check=False)
705 if ret.returncode == 0:
706 return ret.stdout
707 elif ret.returncode == 1:
708 return None
709 else:
710 print('repo: error: git %s failed:\n%s' % (' '.join(cmd), ret.stderr),
711 file=sys.stderr)
712 raise RunError()
713
714
696def _InitHttp(): 715def _InitHttp():
697 handlers = [] 716 handlers = []
698 717
@@ -876,6 +895,25 @@ class _Options(object):
876 version = False 895 version = False
877 896
878 897
898def _ExpandAlias(name):
899 """Look up user registered aliases."""
900 # We don't resolve aliases for existing subcommands. This matches git.
901 if name in {'gitc-init', 'help', 'init'}:
902 return name, []
903
904 alias = _GetRepoConfig('alias.%s' % (name,))
905 if alias is None:
906 return name, []
907
908 args = alias.strip().split(' ', 1)
909 name = args[0]
910 if len(args) == 2:
911 args = shlex.split(args[1])
912 else:
913 args = []
914 return name, args
915
916
879def _ParseArguments(args): 917def _ParseArguments(args):
880 cmd = None 918 cmd = None
881 opt = _Options() 919 opt = _Options()
@@ -1004,6 +1042,11 @@ def main(orig_args):
1004 file=sys.stderr) 1042 file=sys.stderr)
1005 sys.exit(1) 1043 sys.exit(1)
1006 if not repo_main: 1044 if not repo_main:
1045 # Only expand aliases here since we'll be parsing the CLI ourselves.
1046 # If we had repo_main, alias expansion would happen in main.py.
1047 cmd, alias_args = _ExpandAlias(cmd)
1048 args = alias_args + args
1049
1007 if opt.help: 1050 if opt.help:
1008 _Usage() 1051 _Usage()
1009 if cmd == 'help': 1052 if cmd == 'help':