summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rw-r--r--bin/couchdb.bat.tpl.in26
-rw-r--r--bin/couchdb.tpl.in330
-rw-r--r--bin/couchjs.tpl.in92
3 files changed, 448 insertions, 0 deletions
diff --git a/bin/couchdb.bat.tpl.in b/bin/couchdb.bat.tpl.in
new file mode 100644
index 00000000..48d78513
--- /dev/null
+++ b/bin/couchdb.bat.tpl.in
@@ -0,0 +1,26 @@
+@echo off
+rem Licensed under the Apache License, Version 2.0 (the "License"); you may not
+rem use this file except in compliance with the License. You may obtain a copy
+rem of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+rem WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+rem License for the specific language governing permissions and limitations
+rem under the License.
+
+setlocal
+rem First change to the drive with the erlang bin directory
+%~d0
+rem then change to the erlang bin directory
+cd %~dp0
+
+rem Allow a different erlang executable (eg, erl) to be used.
+rem When using erl instead of werl, server restarts during test runs can fail
+rem intermittently. But using erl should be fine for production use.
+if "%ERL%x" == "x" set ERL=werl.exe
+
+echo CouchDB %version% - prepare to relax...
+%ERL% -sasl errlog_type error -s couch
diff --git a/bin/couchdb.tpl.in b/bin/couchdb.tpl.in
new file mode 100644
index 00000000..94d47439
--- /dev/null
+++ b/bin/couchdb.tpl.in
@@ -0,0 +1,330 @@
+#! /bin/sh -e
+
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+BACKGROUND=false
+DEFAULT_CONFIG_DIR=%localconfdir%/default.d
+DEFAULT_CONFIG_FILE=%localconfdir%/%defaultini%
+ERL_START_OPTIONS="-sasl errlog_type error +K true +A 4"
+HEART_BEAT_TIMEOUT=11
+HEART_COMMAND="%bindir%/%couchdb_command_name% -k"
+INTERACTIVE=false
+KILL=false
+LOCAL_CONFIG_DIR=%localconfdir%/local.d
+LOCAL_CONFIG_FILE=%localconfdir%/%localini%
+PID_FILE=%localstatedir%/run/couchdb/couchdb.pid
+RECURSED=false
+RESET_CONFIG=true
+RESPAWN_TIMEOUT=0
+SCRIPT_ERROR=1
+SCRIPT_OK=0
+SHUTDOWN=false
+STDERR_FILE=couchdb.stderr
+STDOUT_FILE=couchdb.stdout
+
+print_arguments=""
+start_arguments=""
+background_start_arguments=""
+
+basename=`basename $0`
+
+display_version () {
+ cat << EOF
+$basename - %package_name% %version%
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
+
+EOF
+}
+
+display_help () {
+ cat << EOF
+Usage: $basename [OPTION]
+
+The $basename command runs the %package_name% server.
+
+Erlang is called with:
+
+ $ERL_START_OPTIONS
+
+Erlang inherits the environment of this command.
+
+You can override these options using the environment:
+
+ ERL_AFLAGS, ERL_FLAGS, ERL_ZFLAGS
+
+See erl(1) for more information about the environment variables.
+
+The exit status is 0 for success or 1 for failure.
+
+Options:
+
+ -h display a short help message and exit
+ -V display version information and exit
+ -a FILE add configuration FILE to chain
+ -A DIR add configuration DIR to chain
+ -n reset configuration file chain (including system default)
+ -c print configuration file chain and exit
+ -i use the interactive Erlang shell
+ -b spawn as a background process
+ -p FILE set the background PID FILE (overrides system default)
+ -r SECONDS respawn background process after SECONDS (defaults to no respawn)
+ -o FILE redirect background stdout to FILE (defaults to $STDOUT_FILE)
+ -e FILE redirect background stderr to FILE (defaults to $STDERR_FILE)
+ -s display the status of the background process
+ -k kill the background process, will respawn if needed
+ -d shutdown the background process
+
+Report bugs at <%bug_uri%>.
+EOF
+}
+
+display_error () {
+ if test -n "$1"; then
+ echo $1 >&2
+ fi
+ echo >&2
+ echo "Try \`"$basename" -h' for more information." >&2
+ false
+}
+
+_get_pid () {
+ if test -f $PID_FILE; then
+ PID=`cat $PID_FILE`
+ fi
+ echo $PID
+}
+
+_add_config_file () {
+ if test -z "$print_arguments"; then
+ print_arguments="$1"
+ else
+ print_arguments="`cat <<EOF
+$print_arguments
+$1
+EOF
+`"
+ fi
+ start_arguments="$start_arguments $1"
+ background_start_arguments="$background_start_arguments -a $1"
+}
+
+_add_config_dir () {
+ for file in "$1"/*.ini; do
+ if [ -r "$file" ]; then
+ _add_config_file "$file"
+ fi
+ done
+}
+
+_load_config () {
+ _add_config_file "$DEFAULT_CONFIG_FILE"
+ _add_config_dir "$DEFAULT_CONFIG_DIR"
+ _add_config_file "$LOCAL_CONFIG_FILE"
+ _add_config_dir "$LOCAL_CONFIG_DIR"
+}
+
+_reset_config () {
+ print_arguments=""
+ start_arguments=""
+ background_start_arguments="-n"
+}
+
+_print_config () {
+ cat <<EOF
+$print_arguments
+EOF
+}
+
+check_status () {
+ PID=`_get_pid`
+ if test -n "$PID"; then
+ if kill -0 $PID 2> /dev/null; then
+ echo "Apache CouchDB is running as process $PID, time to relax."
+ return $SCRIPT_OK
+ else
+ echo >&2 << EOF
+Apache CouchDB is not running but a stale PID file exists: $PID_FILE"
+EOF
+ fi
+ else
+ echo "Apache CouchDB is not running." >&2
+ fi
+ return $SCRIPT_ERROR
+}
+
+check_environment () {
+ if test "$BACKGROUND" != "true"; then
+ return
+ fi
+ touch $PID_FILE 2> /dev/null || true
+ touch $STDOUT_FILE 2> /dev/null || true
+ touch $STDERR_FILE 2> /dev/null || true
+ message_prefix="Apache CouchDB needs write permission on the"
+ if test ! -w $PID_FILE; then
+ echo "$message_prefix PID file: $PID_FILE" >&2
+ false
+ fi
+ if test ! -w $STDOUT_FILE; then
+ echo "$message_prefix STDOUT file: $STDOUT_FILE" >&2
+ false
+ fi
+ if test ! -w $STDERR_FILE; then
+ echo "$message_prefix STDERR file: $STDERR_FILE" >&2
+ false
+ fi
+ message_prefix="Apache CouchDB needs a regular"
+ if test `echo 2> /dev/null >> $PID_FILE; echo $?` -gt 0; then
+ echo "$message_prefix PID file: $PID_FILE" >&2
+ false
+ fi
+ if test `echo 2> /dev/null >> $STDOUT_FILE; echo $?` -gt 0; then
+ echo "$message_prefix STDOUT file: $STDOUT_FILE" >&2
+ false
+ fi
+ if test `echo 2> /dev/null >> $STDERR_FILE; echo $?` -gt 0; then
+ echo "$message_prefix STDERR file: $STDERR_FILE" >&2
+ false
+ fi
+}
+
+start_couchdb () {
+ if test ! "$RECURSED" = "true"; then
+ if check_status 2> /dev/null; then
+ exit
+ fi
+ check_environment
+ fi
+ interactive_option="+Bd -noinput"
+ if test "$INTERACTIVE" = "true"; then
+ interactive_option=""
+ fi
+ if test "$BACKGROUND" = "true"; then
+ touch $PID_FILE
+ interactive_option="+Bd -noinput"
+ fi
+ command="%ERL% $interactive_option $ERL_START_OPTIONS \
+ -env ERL_LIBS %localerlanglibdir% -couch_ini $start_arguments -s couch"
+ if test "$BACKGROUND" = "true" -a "$RECURSED" = "false"; then
+ $0 $background_start_arguments -b -r $RESPAWN_TIMEOUT -p $PID_FILE \
+ -o $STDOUT_FILE -e $STDERR_FILE -R &
+ echo "Apache CouchDB has started, time to relax."
+ else
+ if test "$RECURSED" = "true"; then
+ while true; do
+ export HEART_COMMAND
+ export HEART_BEAT_TIMEOUT
+ `eval $command -pidfile $PID_FILE -heart \
+ >> $STDOUT_FILE 2>> $STDERR_FILE` || true
+ PID=`_get_pid`
+ if test -n "$PID"; then
+ if kill -0 $PID 2> /dev/null; then
+ return $SCRIPT_ERROR
+ fi
+ else
+ return $SCRIPT_OK
+ fi
+ if test "$RESPAWN_TIMEOUT" = "0"; then
+ return $SCRIPT_OK
+ fi
+ if test "$RESPAWN_TIMEOUT" != "1"; then
+ plural_ending="s"
+ fi
+ cat << EOF
+Apache CouchDB crashed, restarting in $RESPAWN_TIMEOUT second$plural_ending.
+EOF
+ sleep $RESPAWN_TIMEOUT
+ done
+ else
+ eval exec $command
+ fi
+ fi
+}
+
+stop_couchdb () {
+ PID=`_get_pid`
+ if test -n "$PID"; then
+ if test "$1" = "false"; then
+ echo > $PID_FILE
+ fi
+ if kill -0 $PID 2> /dev/null; then
+ if kill -1 $PID 2> /dev/null; then
+ if test "$1" = "false"; then
+ echo "Apache CouchDB has been shutdown."
+ else
+ echo "Apache CouchDB has been killed."
+ fi
+ return $SCRIPT_OK
+ else
+ echo "Apache CouchDB could not be killed." >&2
+ return $SCRIPT_ERROR
+ fi
+ if test "$1" = "false"; then
+ echo "Stale PID file exists but Apache CouchDB is not running."
+ else
+ echo "Stale PID file existed but Apache CouchDB is not running."
+ fi
+ fi
+ else
+ echo "Apache CouchDB is not running."
+ fi
+}
+
+parse_script_option_list () {
+ _load_config
+ set +e
+ options=`getopt hVa:A:ncibp:r:Ro:e:skd $@`
+ if test ! $? -eq 0; then
+ display_error
+ fi
+ set -e
+ eval set -- $options
+ while [ $# -gt 0 ]; do
+ case "$1" in
+ -h) shift; display_help; exit;;
+ -V) shift; display_version; exit;;
+ -a) shift; _add_config_file "$1"; shift;;
+ -A) shift; _add_config_dir "$1"; shift;;
+ -n) shift; _reset_config;;
+ -c) shift; _print_config; exit;;
+ -i) shift; INTERACTIVE=true;;
+ -b) shift; BACKGROUND=true;;
+ -r) shift; RESPAWN_TIMEOUT=$1; shift;;
+ -R) shift; RECURSED=true;;
+ -p) shift; PID_FILE=$1; shift;;
+ -o) shift; STDOUT_FILE=$1; shift;;
+ -e) shift; STDERR_FILE=$1; shift;;
+ -s) shift; check_status; exit;;
+ -k) shift; KILL=true;;
+ -d) shift; SHUTDOWN=true;;
+ --) shift; break;;
+ *) display_error "Unknown option: $1" >&2;;
+ esac
+ done
+ if test "$KILL" = "true" -o "$SHUTDOWN" = "true"; then
+ stop_couchdb $KILL
+ else
+ start_couchdb
+ fi
+}
+
+parse_script_option_list $@
diff --git a/bin/couchjs.tpl.in b/bin/couchjs.tpl.in
new file mode 100644
index 00000000..6927a0d4
--- /dev/null
+++ b/bin/couchjs.tpl.in
@@ -0,0 +1,92 @@
+#! /bin/sh -e
+
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+SCRIPT_OK=0
+SCRIPT_ERROR=1
+
+DEFAULT_VERSION=170
+
+basename=`basename $0`
+
+display_version () {
+ cat << EOF
+$basename - %package_name% %version%
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
+EOF
+}
+
+display_help () {
+ cat << EOF
+Usage: $basename [FILE]
+
+The $basename command runs the %package_name% JavaScript interpreter.
+
+The exit status is 0 for success or 1 for failure.
+
+Options:
+
+ -h display a short help message and exit
+ -V display version information and exit
+
+Report bugs at <%bug_uri%>.
+EOF
+}
+
+display_error () {
+ if test -n "$1"; then
+ echo $1 >&2
+ fi
+ echo >&2
+ echo "Try \`"$basename" -h' for more information." >&2
+ exit $SCRIPT_ERROR
+}
+
+run_couchjs () {
+ exec %locallibbindir%/%couchjs_command_name% $@
+}
+
+parse_script_option_list () {
+ set +e
+ options=`getopt hV $@`
+ if test ! $? -eq 0; then
+ display_error
+ fi
+ set -e
+ eval set -- $options
+ while [ $# -gt 0 ]; do
+ case "$1" in
+ -h) shift; display_help; exit $SCRIPT_OK;;
+ -V) shift; display_version; exit $SCRIPT_OK;;
+ --) shift; break;;
+ *) break;;
+ esac
+ done
+ option_list=`echo $@ | sed 's/--//'`
+ if test -z "$option_list"; then
+ display_error "You must specify a FILE."
+ fi
+ run_couchjs $option_list
+}
+
+parse_script_option_list $@