Re: [PATCH] difftool: print list of valid tools with '--tool-help'
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:53:19
Tim Henigan [off-list ref] writes:
quoted hunk
@@ -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.