git-instaweb: improve auto-discovery of httpd and call conventions.
This patch allows calling: git-instaweb -d apache2 and have the script Do The Right Thing. In particular, the auto-discovery mechanism has been extended in order to be used for module listing as well, and the call convention is that if the daemon is apache2/lighttpd and the parameter to the "-d" option does not end by "-f", the "-f" is added to the end of the option itself. Change all backticks to $( ... ) as per Documentation/CodingGuidelines. Signed-off-by: Flavio Poletti <flavio@polettix.it> Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
d88593fa04
commit
43d60d2e59
|
@ -22,10 +22,10 @@ restart restart the web server
|
||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
|
|
||||||
fqgitdir="$GIT_DIR"
|
fqgitdir="$GIT_DIR"
|
||||||
local="`git config --bool --get instaweb.local`"
|
local="$(git config --bool --get instaweb.local)"
|
||||||
httpd="`git config --get instaweb.httpd`"
|
httpd="$(git config --get instaweb.httpd)"
|
||||||
port=`git config --get instaweb.port`
|
port=$(git config --get instaweb.port)
|
||||||
module_path="`git config --get instaweb.modulepath`"
|
module_path="$(git config --get instaweb.modulepath)"
|
||||||
|
|
||||||
conf="$GIT_DIR/gitweb/httpd.conf"
|
conf="$GIT_DIR/gitweb/httpd.conf"
|
||||||
|
|
||||||
|
@ -37,11 +37,21 @@ test -z "$httpd" && httpd='lighttpd -f'
|
||||||
# any untaken local port will do...
|
# any untaken local port will do...
|
||||||
test -z "$port" && port=1234
|
test -z "$port" && port=1234
|
||||||
|
|
||||||
start_httpd () {
|
resolve_full_httpd () {
|
||||||
httpd_only="`echo $httpd | cut -f1 -d' '`"
|
case "$httpd" in
|
||||||
|
*apache2*|*lighttpd*)
|
||||||
|
# ensure that the apache2/lighttpd command ends with "-f"
|
||||||
|
if ! echo "$httpd" | grep -- '-f *$' >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
httpd="$httpd -f"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
httpd_only="$(echo $httpd | cut -f1 -d' ')"
|
||||||
if case "$httpd_only" in /*) : ;; *) which $httpd_only >/dev/null;; esac
|
if case "$httpd_only" in /*) : ;; *) which $httpd_only >/dev/null;; esac
|
||||||
then
|
then
|
||||||
$httpd "$fqgitdir/gitweb/httpd.conf"
|
full_httpd=$httpd
|
||||||
else
|
else
|
||||||
# many httpds are installed in /usr/sbin or /usr/local/sbin
|
# many httpds are installed in /usr/sbin or /usr/local/sbin
|
||||||
# these days and those are not in most users $PATHs
|
# these days and those are not in most users $PATHs
|
||||||
|
@ -51,16 +61,23 @@ start_httpd () {
|
||||||
do
|
do
|
||||||
if test -x "$i/$httpd_only"
|
if test -x "$i/$httpd_only"
|
||||||
then
|
then
|
||||||
# don't quote $httpd, there can be
|
full_httpd=$i/$httpd
|
||||||
# arguments to it (-f)
|
|
||||||
$i/$httpd "$fqgitdir/gitweb/httpd.conf"
|
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "$httpd_only not found. Install $httpd_only or use" \
|
|
||||||
"--httpd to specify another http daemon."
|
echo >&2 "$httpd_only not found. Install $httpd_only or use" \
|
||||||
|
"--httpd to specify another httpd daemon."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
start_httpd () {
|
||||||
|
# here $httpd should have a meaningful value
|
||||||
|
resolve_full_httpd
|
||||||
|
|
||||||
|
# don't quote $full_httpd, there can be arguments to it (-f)
|
||||||
|
$full_httpd "$fqgitdir/gitweb/httpd.conf"
|
||||||
if test $? != 0; then
|
if test $? != 0; then
|
||||||
echo "Could not execute http daemon $httpd."
|
echo "Could not execute http daemon $httpd."
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -68,7 +85,7 @@ start_httpd () {
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_httpd () {
|
stop_httpd () {
|
||||||
test -f "$fqgitdir/pid" && kill `cat "$fqgitdir/pid"`
|
test -f "$fqgitdir/pid" && kill $(cat "$fqgitdir/pid")
|
||||||
}
|
}
|
||||||
|
|
||||||
while test $# != 0
|
while test $# != 0
|
||||||
|
@ -116,7 +133,7 @@ do
|
||||||
done
|
done
|
||||||
|
|
||||||
mkdir -p "$GIT_DIR/gitweb/tmp"
|
mkdir -p "$GIT_DIR/gitweb/tmp"
|
||||||
GIT_EXEC_PATH="`git --exec-path`"
|
GIT_EXEC_PATH="$(git --exec-path)"
|
||||||
GIT_DIR="$fqgitdir"
|
GIT_DIR="$fqgitdir"
|
||||||
export GIT_EXEC_PATH GIT_DIR
|
export GIT_EXEC_PATH GIT_DIR
|
||||||
|
|
||||||
|
@ -215,7 +232,8 @@ PerlPassEnv GIT_EXEC_DIR
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
# plain-old CGI
|
# plain-old CGI
|
||||||
list_mods=`echo "$httpd" | sed "s/-f$/-l/"`
|
resolve_full_httpd
|
||||||
|
list_mods=$(echo "$full_httpd" | sed "s/-f$/-l/")
|
||||||
$list_mods | grep 'mod_cgi\.c' >/dev/null 2>&1 || \
|
$list_mods | grep 'mod_cgi\.c' >/dev/null 2>&1 || \
|
||||||
echo "LoadModule cgi_module $module_path/mod_cgi.so" >> "$conf"
|
echo "LoadModule cgi_module $module_path/mod_cgi.so" >> "$conf"
|
||||||
cat >> "$conf" <<EOF
|
cat >> "$conf" <<EOF
|
||||||
|
|
Loading…
Reference in New Issue