diff options
author | Christian Couder <chriscool@tuxfamily.org> | 2008-03-14 05:56:49 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-03-14 00:31:06 -0700 |
commit | 77e21533a938b886ed2b8636a75f76870f4805de (patch) | |
tree | 0a57654633b619f7246f302856406828c9eed9d1 | |
parent | 5ad9db3d040bf77031958c8f51a0106818119617 (diff) | |
download | git-77e21533a938b886ed2b8636a75f76870f4805de.tar.gz git-77e21533a938b886ed2b8636a75f76870f4805de.tar.xz |
web--browse: use custom commands defined at config time
Currently "git web--browse" is restricted to a set of commands defined
in the script. You can subvert the "browser.<tool>.path" to force "git
web--browse" to use a different command, but if you have a command
whose invocation syntax does not match one of the current tools then
you would have to write a wrapper script for it.
This patch adds a git config variable "browser.<tool>.cmd" which
allows a more flexible browser choice.
If you run "git web--browse" with -t/--tool, -b/--browser or the
"web.browser" config variable set to an unrecognized tool then "git
web--browse" will query the "browser.<tool>.cmd" config variable. If
this variable exists, then "git web--browse" will treat the specified
tool as a custom command and will use a shell eval to run the command
with the URLs added as extra parameters.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-web--browse.sh | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/git-web--browse.sh b/git-web--browse.sh index 1023b9085..384148a59 100755 --- a/git-web--browse.sh +++ b/git-web--browse.sh @@ -23,12 +23,18 @@ USAGE='[--browser=browser|--tool=browser] [--config=conf.var] url/file ...' NONGIT_OK=Yes . git-sh-setup +valid_custom_tool() +{ + browser_cmd="$(git config "browser.$1.cmd")" + test -n "$browser_cmd" +} + valid_tool() { case "$1" in firefox | iceweasel | konqueror | w3m | links | lynx | dillo | open) ;; # happy *) - return 1 + valid_custom_tool "$1" || return 1 ;; esac } @@ -122,7 +128,7 @@ else init_browser_path "$browser" - if ! type "$browser_path" > /dev/null 2>&1; then + if test -z "$browser_cmd" && ! type "$browser_path" > /dev/null 2>&1; then die "The browser $browser is not available as '$browser_path'." fi fi @@ -157,4 +163,9 @@ case "$browser" in dillo) "$browser_path" "$@" & ;; + *) + if test -n "$browser_cmd"; then + ( eval $browser_cmd "$@" ) + fi + ;; esac |