diff options
| author | Mike Frysinger <vapier@google.com> | 2020-02-18 21:37:00 -0500 |
|---|---|---|
| committer | Mike Frysinger <vapier@google.com> | 2020-02-20 00:53:46 +0000 |
| commit | 949bc34267245d35b066ebbc9e5ae8be081db86f (patch) | |
| tree | 5cf3d4e49fd971863b8084cd0f97e11d0478442a /main.py | |
| parent | f841ca48c150e8a62728c5875fb01dcf7c5756a7 (diff) | |
| download | git-repo-949bc34267245d35b066ebbc9e5ae8be081db86f.tar.gz git-repo-949bc34267245d35b066ebbc9e5ae8be081db86f.zip | |
main/repo: add support for subcommand aliases
This supports [alias] sections with repo subcommands just like git.
Change-Id: Ie9235b5d4449414e6a745814f0110bd6af74ea93
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255833
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
Tested-by: Mike Frysinger <vapier@google.com>
Diffstat (limited to 'main.py')
| -rwxr-xr-x | main.py | 27 |
1 files changed, 26 insertions, 1 deletions
@@ -26,6 +26,7 @@ import getpass import netrc import optparse import os +import shlex import sys import textwrap import time @@ -48,7 +49,7 @@ from color import SetDefaultColoring import event_log from repo_trace import SetTrace from git_command import user_agent -from git_config import init_ssh, close_ssh +from git_config import init_ssh, close_ssh, RepoConfig from command import InteractiveCommand from command import MirrorSafeCommand from command import GitcAvailableCommand, GitcClientCommand @@ -155,6 +156,9 @@ class _Repo(object): argv = [] gopts, _gargs = global_options.parse_args(glob) + name, alias_args = self._ExpandAlias(name) + argv = alias_args + argv + if gopts.help: global_options.print_help() commands = ' '.join(sorted(self.commands)) @@ -165,6 +169,27 @@ class _Repo(object): return (name, gopts, argv) + def _ExpandAlias(self, name): + """Look up user registered aliases.""" + # We don't resolve aliases for existing subcommands. This matches git. + if name in self.commands: + return name, [] + + key = 'alias.%s' % (name,) + alias = RepoConfig.ForRepository(self.repodir).GetString(key) + if alias is None: + alias = RepoConfig.ForUser().GetString(key) + if alias is None: + return name, [] + + args = alias.strip().split(' ', 1) + name = args[0] + if len(args) == 2: + args = shlex.split(args[1]) + else: + args = [] + return name, args + def _Run(self, name, gopts, argv): """Execute the requested subcommand.""" result = 0 |
