gitc: Improve help visibility

This improves the visiblity of gitc-init if we can get the gitc config,
and hides it otherwise.

Change-Id: I82830b0b07c311e8c74397ba79eb4c361f8b6fb5
This commit is contained in:
Dan Willemsen 2015-08-31 15:45:06 -07:00
parent 2487cb7b2c
commit 9ff2ece6ab
5 changed files with 39 additions and 5 deletions

View File

@ -230,3 +230,8 @@ class MirrorSafeCommand(object):
"""Command permits itself to run within a mirror, """Command permits itself to run within a mirror,
and does not require a working directory. and does not require a working directory.
""" """
class RequiresGitcCommand(object):
"""Command that requires GITC to be available, but does
not require the local client to be a GITC client.
"""

View File

@ -42,6 +42,7 @@ from git_command import git, GitCommand
from git_config import init_ssh, close_ssh from git_config import init_ssh, close_ssh
from command import InteractiveCommand from command import InteractiveCommand
from command import MirrorSafeCommand from command import MirrorSafeCommand
from command import RequiresGitcCommand
from subcmds.version import Version from subcmds.version import Version
from editor import Editor from editor import Editor
from error import DownloadError from error import DownloadError
@ -143,6 +144,11 @@ class _Repo(object):
file=sys.stderr) file=sys.stderr)
return 1 return 1
if isinstance(cmd, RequiresGitcCommand) and not gitc_utils.get_gitc_manifest_dir():
print("fatal: '%s' requires GITC to be available" % name,
file=sys.stderr)
return 1
try: try:
copts, cargs = cmd.OptionParser.parse_args(argv) copts, cargs = cmd.OptionParser.parse_args(argv)
copts = cmd.ReadEnvironmentOptions(copts) copts = cmd.ReadEnvironmentOptions(copts)

17
repo
View File

@ -214,6 +214,7 @@ group.add_option('--config-name',
help='Always prompt for name/e-mail') help='Always prompt for name/e-mail')
def _GitcInitOptions(init_optparse): def _GitcInitOptions(init_optparse):
init_optparse.set_usage("repo gitc-init -u url -c client [options]")
g = init_optparse.add_option_group('GITC options') g = init_optparse.add_option_group('GITC options')
g.add_option('-f', '--manifest-file', g.add_option('-f', '--manifest-file',
dest='manifest_file', dest='manifest_file',
@ -272,9 +273,12 @@ def _Init(args, gitc_init=False):
if gitc_init: if gitc_init:
gitc_manifest_dir = get_gitc_manifest_dir() gitc_manifest_dir = get_gitc_manifest_dir()
if not gitc_manifest_dir: if not gitc_manifest_dir:
_print('error: GITC filesystem is not running. Exiting...', _print('fatal: GITC filesystem is not available. Exiting...',
file=sys.stderr) file=sys.stderr)
sys.exit(1) sys.exit(1)
if not opt.gitc_client:
_print('fatal: GITC client (-c) is required.', file=sys.stderr)
sys.exit(1)
client_dir = os.path.join(gitc_manifest_dir, opt.gitc_client) client_dir = os.path.join(gitc_manifest_dir, opt.gitc_client)
if not os.path.exists(client_dir): if not os.path.exists(client_dir):
os.makedirs(client_dir) os.makedirs(client_dir)
@ -681,6 +685,10 @@ def _ParseArguments(args):
def _Usage(): def _Usage():
gitc_usage = ""
if get_gitc_manifest_dir():
gitc_usage = " gitc-init Initialize a GITC Client.\n"
_print( _print(
"""usage: repo COMMAND [ARGS] """usage: repo COMMAND [ARGS]
@ -689,7 +697,8 @@ repo is not yet installed. Use "repo init" to install it here.
The most commonly used repo commands are: The most commonly used repo commands are:
init Install repo in the current working directory init Install repo in the current working directory
help Display detailed help on a command """ + gitc_usage +
""" help Display detailed help on a command
For access to the full online help, install repo ("repo init"). For access to the full online help, install repo ("repo init").
""", file=sys.stderr) """, file=sys.stderr)
@ -701,6 +710,10 @@ def _Help(args):
if args[0] == 'init': if args[0] == 'init':
init_optparse.print_help() init_optparse.print_help()
sys.exit(0) sys.exit(0)
elif args[0] == 'gitc-init':
_GitcInitOptions(init_optparse)
init_optparse.print_help()
sys.exit(0)
else: else:
_print("error: '%s' is not a bootstrap command.\n" _print("error: '%s' is not a bootstrap command.\n"
' For access to online help, install repo ("repo init").' ' For access to online help, install repo ("repo init").'

View File

@ -18,10 +18,11 @@ import os
import sys import sys
import gitc_utils import gitc_utils
from command import RequiresGitcCommand
from subcmds import init from subcmds import init
class GitcInit(init.Init): class GitcInit(init.Init, RequiresGitcCommand):
common = True common = True
helpSummary = "Initialize a GITC Client." helpSummary = "Initialize a GITC Client."
helpUsage = """ helpUsage = """

View File

@ -19,7 +19,8 @@ import sys
from formatter import AbstractFormatter, DumbWriter from formatter import AbstractFormatter, DumbWriter
from color import Coloring from color import Coloring
from command import PagedCommand, MirrorSafeCommand from command import PagedCommand, MirrorSafeCommand, RequiresGitcCommand
import gitc_utils
class Help(PagedCommand, MirrorSafeCommand): class Help(PagedCommand, MirrorSafeCommand):
common = False common = False
@ -54,9 +55,17 @@ Displays detailed usage information about a command.
def _PrintCommonCommands(self): def _PrintCommonCommands(self):
print('usage: repo COMMAND [ARGS]') print('usage: repo COMMAND [ARGS]')
print('The most commonly used repo commands are:') print('The most commonly used repo commands are:')
def gitc_supported(cmd):
if not isinstance(cmd, RequiresGitcCommand):
return True
if gitc_utils.get_gitc_manifest_dir():
return True
return False
commandNames = list(sorted([name commandNames = list(sorted([name
for name, command in self.commands.items() for name, command in self.commands.items()
if command.common])) if command.common and gitc_supported(command)]))
maxlen = 0 maxlen = 0
for name in commandNames: for name in commandNames: