From 79360640f4c7d5f044973aa1bdb6fb0f8f311f05 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Mon, 31 Aug 2015 15:45:06 -0700 Subject: [PATCH] Add GitcClientCommand class for GITC-specific commands These won't show up as common commands in the help text unless in a GITC client, and will refuse to execute. Change-Id: Iffe82adcc9d6ddde9cb4b204f83ff018042bdab0 --- command.py | 7 ++++++- main.py | 9 +++++++-- subcmds/gitc_init.py | 4 ++-- subcmds/help.py | 8 ++++++-- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/command.py b/command.py index 997acec0..cd5e3c3e 100644 --- a/command.py +++ b/command.py @@ -231,7 +231,12 @@ class MirrorSafeCommand(object): and does not require a working directory. """ -class RequiresGitcCommand(object): +class GitcAvailableCommand(object): """Command that requires GITC to be available, but does not require the local client to be a GITC client. """ + +class GitcClientCommand(object): + """Command that requires the local client to be a GITC + client. + """ diff --git a/main.py b/main.py index a5979a87..4f4eb9fc 100755 --- a/main.py +++ b/main.py @@ -42,7 +42,7 @@ from git_command import git, GitCommand from git_config import init_ssh, close_ssh from command import InteractiveCommand from command import MirrorSafeCommand -from command import RequiresGitcCommand +from command import GitcAvailableCommand, GitcClientCommand from subcmds.version import Version from editor import Editor from error import DownloadError @@ -144,11 +144,16 @@ class _Repo(object): file=sys.stderr) return 1 - if isinstance(cmd, RequiresGitcCommand) and not gitc_utils.get_gitc_manifest_dir(): + if isinstance(cmd, GitcAvailableCommand) and not gitc_utils.get_gitc_manifest_dir(): print("fatal: '%s' requires GITC to be available" % name, file=sys.stderr) return 1 + if isinstance(cmd, GitcClientCommand) and not gitc_client_name: + print("fatal: '%s' requires a GITC client" % name, + file=sys.stderr) + return 1 + try: copts, cargs = cmd.OptionParser.parse_args(argv) copts = cmd.ReadEnvironmentOptions(copts) diff --git a/subcmds/gitc_init.py b/subcmds/gitc_init.py index c243bb3b..4f9d7344 100644 --- a/subcmds/gitc_init.py +++ b/subcmds/gitc_init.py @@ -18,12 +18,12 @@ import os import sys import gitc_utils -from command import RequiresGitcCommand +from command import GitcAvailableCommand from manifest_xml import GitcManifest from subcmds import init -class GitcInit(init.Init, RequiresGitcCommand): +class GitcInit(init.Init, GitcAvailableCommand): common = True helpSummary = "Initialize a GITC Client." helpUsage = """ diff --git a/subcmds/help.py b/subcmds/help.py index ae5b8f08..9bb4c8c7 100644 --- a/subcmds/help.py +++ b/subcmds/help.py @@ -19,7 +19,7 @@ import sys from formatter import AbstractFormatter, DumbWriter from color import Coloring -from command import PagedCommand, MirrorSafeCommand, RequiresGitcCommand +from command import PagedCommand, MirrorSafeCommand, GitcAvailableCommand, GitcClientCommand import gitc_utils class Help(PagedCommand, MirrorSafeCommand): @@ -57,8 +57,12 @@ Displays detailed usage information about a command. print('The most commonly used repo commands are:') def gitc_supported(cmd): - if not isinstance(cmd, RequiresGitcCommand): + if not isinstance(cmd, GitcAvailableCommand) and not isinstance(cmd, GitcClientCommand): return True + if self.manifest.isGitcClient: + return True + if isinstance(cmd, GitcClientCommand): + return False if gitc_utils.get_gitc_manifest_dir(): return True return False