Re: [PATCH] difftool: print list of valid tools with '--tool-help'
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 15, 2012, 23:18 UTC
- Message-ID
- <7v8vj1ihcn.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1331850311-4620-1-git-send-email-tim.henigan@gmail.com>
Tim Henigan <tim.henigan@gmail.com> writes:
Show 11 quoted lines
> @@ -100,6 +101,15 @@ sub generate_command
> if ($arg eq '-h') {
> usage();
> }
> + if ($arg eq '--tool-help') {
> + my $gitpath = Git::exec_path();
> + print "'git difftool --tool=<tool>' may be set to one of the following:\n";
> + for (glob "$gitpath/mergetools/*") {
> + next if /defaults$/;
> + print "\t" . basename($_) . "\n";
> + }As this topic to show list of tools dynamically has plenty of time to be in the mainline (it will be post 1.7.10), I would suggest a follow-up series to this patch to do things like the following (just thinking aloud):
- define a new entry point to these mergetools/ scriptlets, let's call it "cando". An entry for mergetools/kompare might look like this:
cando () {
type kompare >/dev/null && test -n "$DISPLAY"
}that would yield true only when kompare is available and $DISPLAY is set.
- instead of dumping everything in $gitpath/mergetools/*, check if each tool says it can be used in the user's environment.
for (glob "$gitpath/mergetools/*") {
next unless can_run($_);
print ...
}
...and "can_run" may look like this:
sub can_run {
my ($script) = @_;
my $cmd = ". '$script' && cando";
system('sh', '-c', $cmd) == 0;
}- perhaps show the result in columnar layout.