summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2015-08-31 15:45:06 -0700
committerDan Willemsen <dwillemsen@google.com>2015-09-01 12:23:56 -0700
commit9ff2ece6abc5d0d4a69c2f086209f107fd4f04be (patch)
tree1daabfe078e59b38ba0a1fdf9f6b0c83bcf7eba9
parent2487cb7b2c41506c8ef900dba735876b01c67eab (diff)
downloadgit-repo-9ff2ece6abc5d0d4a69c2f086209f107fd4f04be.tar.gz
gitc: Improve help visibilityv1.12.28
This improves the visiblity of gitc-init if we can get the gitc config, and hides it otherwise. Change-Id: I82830b0b07c311e8c74397ba79eb4c361f8b6fb5
-rw-r--r--command.py5
-rwxr-xr-xmain.py6
-rwxr-xr-xrepo17
-rw-r--r--subcmds/gitc_init.py3
-rw-r--r--subcmds/help.py13
5 files changed, 39 insertions, 5 deletions
diff --git a/command.py b/command.py
index 78dab96d..997acec0 100644
--- a/command.py
+++ b/command.py
@@ -230,3 +230,8 @@ class MirrorSafeCommand(object):
230 """Command permits itself to run within a mirror, 230 """Command permits itself to run within a mirror,
231 and does not require a working directory. 231 and does not require a working directory.
232 """ 232 """
233
234class RequiresGitcCommand(object):
235 """Command that requires GITC to be available, but does
236 not require the local client to be a GITC client.
237 """
diff --git a/main.py b/main.py
index adfaffb0..a5979a87 100755
--- a/main.py
+++ b/main.py
@@ -42,6 +42,7 @@ from git_command import git, GitCommand
42from git_config import init_ssh, close_ssh 42from git_config import init_ssh, close_ssh
43from command import InteractiveCommand 43from command import InteractiveCommand
44from command import MirrorSafeCommand 44from command import MirrorSafeCommand
45from command import RequiresGitcCommand
45from subcmds.version import Version 46from subcmds.version import Version
46from editor import Editor 47from editor import Editor
47from error import DownloadError 48from error import DownloadError
@@ -143,6 +144,11 @@ class _Repo(object):
143 file=sys.stderr) 144 file=sys.stderr)
144 return 1 145 return 1
145 146
147 if isinstance(cmd, RequiresGitcCommand) and not gitc_utils.get_gitc_manifest_dir():
148 print("fatal: '%s' requires GITC to be available" % name,
149 file=sys.stderr)
150 return 1
151
146 try: 152 try:
147 copts, cargs = cmd.OptionParser.parse_args(argv) 153 copts, cargs = cmd.OptionParser.parse_args(argv)
148 copts = cmd.ReadEnvironmentOptions(copts) 154 copts = cmd.ReadEnvironmentOptions(copts)
diff --git a/repo b/repo
index 01c1cb0e..b7d8024f 100755
--- a/repo
+++ b/repo
@@ -214,6 +214,7 @@ group.add_option('--config-name',
214 help='Always prompt for name/e-mail') 214 help='Always prompt for name/e-mail')
215 215
216def _GitcInitOptions(init_optparse): 216def _GitcInitOptions(init_optparse):
217 init_optparse.set_usage("repo gitc-init -u url -c client [options]")
217 g = init_optparse.add_option_group('GITC options') 218 g = init_optparse.add_option_group('GITC options')
218 g.add_option('-f', '--manifest-file', 219 g.add_option('-f', '--manifest-file',
219 dest='manifest_file', 220 dest='manifest_file',
@@ -272,9 +273,12 @@ def _Init(args, gitc_init=False):
272 if gitc_init: 273 if gitc_init:
273 gitc_manifest_dir = get_gitc_manifest_dir() 274 gitc_manifest_dir = get_gitc_manifest_dir()
274 if not gitc_manifest_dir: 275 if not gitc_manifest_dir:
275 _print('error: GITC filesystem is not running. Exiting...', 276 _print('fatal: GITC filesystem is not available. Exiting...',
276 file=sys.stderr) 277 file=sys.stderr)
277 sys.exit(1) 278 sys.exit(1)
279 if not opt.gitc_client:
280 _print('fatal: GITC client (-c) is required.', file=sys.stderr)
281 sys.exit(1)
278 client_dir = os.path.join(gitc_manifest_dir, opt.gitc_client) 282 client_dir = os.path.join(gitc_manifest_dir, opt.gitc_client)
279 if not os.path.exists(client_dir): 283 if not os.path.exists(client_dir):
280 os.makedirs(client_dir) 284 os.makedirs(client_dir)
@@ -681,6 +685,10 @@ def _ParseArguments(args):
681 685
682 686
683def _Usage(): 687def _Usage():
688 gitc_usage = ""
689 if get_gitc_manifest_dir():
690 gitc_usage = " gitc-init Initialize a GITC Client.\n"
691
684 _print( 692 _print(
685"""usage: repo COMMAND [ARGS] 693"""usage: repo COMMAND [ARGS]
686 694
@@ -689,7 +697,8 @@ repo is not yet installed. Use "repo init" to install it here.
689The most commonly used repo commands are: 697The most commonly used repo commands are:
690 698
691 init Install repo in the current working directory 699 init Install repo in the current working directory
692 help Display detailed help on a command 700""" + gitc_usage +
701""" help Display detailed help on a command
693 702
694For access to the full online help, install repo ("repo init"). 703For access to the full online help, install repo ("repo init").
695""", file=sys.stderr) 704""", file=sys.stderr)
@@ -701,6 +710,10 @@ def _Help(args):
701 if args[0] == 'init': 710 if args[0] == 'init':
702 init_optparse.print_help() 711 init_optparse.print_help()
703 sys.exit(0) 712 sys.exit(0)
713 elif args[0] == 'gitc-init':
714 _GitcInitOptions(init_optparse)
715 init_optparse.print_help()
716 sys.exit(0)
704 else: 717 else:
705 _print("error: '%s' is not a bootstrap command.\n" 718 _print("error: '%s' is not a bootstrap command.\n"
706 ' For access to online help, install repo ("repo init").' 719 ' For access to online help, install repo ("repo init").'
diff --git a/subcmds/gitc_init.py b/subcmds/gitc_init.py
index c0568caa..e99affa5 100644
--- a/subcmds/gitc_init.py
+++ b/subcmds/gitc_init.py
@@ -18,10 +18,11 @@ import os
18import sys 18import sys
19 19
20import gitc_utils 20import gitc_utils
21from command import RequiresGitcCommand
21from subcmds import init 22from subcmds import init
22 23
23 24
24class GitcInit(init.Init): 25class GitcInit(init.Init, RequiresGitcCommand):
25 common = True 26 common = True
26 helpSummary = "Initialize a GITC Client." 27 helpSummary = "Initialize a GITC Client."
27 helpUsage = """ 28 helpUsage = """
diff --git a/subcmds/help.py b/subcmds/help.py
index 4aa3f863..ae5b8f08 100644
--- a/subcmds/help.py
+++ b/subcmds/help.py
@@ -19,7 +19,8 @@ import sys
19from formatter import AbstractFormatter, DumbWriter 19from formatter import AbstractFormatter, DumbWriter
20 20
21from color import Coloring 21from color import Coloring
22from command import PagedCommand, MirrorSafeCommand 22from command import PagedCommand, MirrorSafeCommand, RequiresGitcCommand
23import gitc_utils
23 24
24class Help(PagedCommand, MirrorSafeCommand): 25class Help(PagedCommand, MirrorSafeCommand):
25 common = False 26 common = False
@@ -54,9 +55,17 @@ Displays detailed usage information about a command.
54 def _PrintCommonCommands(self): 55 def _PrintCommonCommands(self):
55 print('usage: repo COMMAND [ARGS]') 56 print('usage: repo COMMAND [ARGS]')
56 print('The most commonly used repo commands are:') 57 print('The most commonly used repo commands are:')
58
59 def gitc_supported(cmd):
60 if not isinstance(cmd, RequiresGitcCommand):
61 return True
62 if gitc_utils.get_gitc_manifest_dir():
63 return True
64 return False
65
57 commandNames = list(sorted([name 66 commandNames = list(sorted([name
58 for name, command in self.commands.items() 67 for name, command in self.commands.items()
59 if command.common])) 68 if command.common and gitc_supported(command)]))
60 69
61 maxlen = 0 70 maxlen = 0
62 for name in commandNames: 71 for name in commandNames: