aboutsummaryrefslogtreecommitdiff
path: root/databases/couchdb2/files/couchdb2.in
blob: f7137fdd1d664d38638f84c4d280a77d4b57c7e2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/sh

# PROVIDE: couchdb2
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# couchdb2_enable (bool):       Set to NO by default.
#                               Set it to YES to enable couchdb2.

. /etc/rc.subr

name="couchdb2"
rcvar=couchdb2_enable

start_cmd="${name}_start"
stop_cmd="${name}_stop"
status_cmd="${name}_status"

load_rc_config $name

: ${couchdb2_enable:="NO"}
: ${couchdb2_user="couchdb"}
: ${couchdb2_erl_flags="-couch_ini %%APPDIR%%/etc/default.ini %%ETCDIR%%/local.ini"}
: ${couchdb2_chdir="/var/db/%%PORTNAME%%"}

command="%%ERL_PATH%%"
pidfile="/var/run/${name}.pid"
daemonpidfile="/var/run/${name}-daemon.pid"

erl_sasl='-sasl releases_dir \"%%PORTNAME%%/releases\"'
erl_boot='-boot %%RELDIR%%/couchdb -boot_var RELTOOL_EXT_LIB %%APPDIR%%/lib'
erl_args='-args_file %%ETCDIR%%/vm.args'
erl_flags="${erl_sasl} ${erl_boot} ${erl_args} ${couchdb2_erl_flags}"

couchdb2_start()
{
    # chdir manually as overriding _start() blocks rc.subr defaults
    cd "${couchdb2_chdir}"
    /usr/sbin/daemon -p ${pidfile} \
        -P ${daemonpidfile} \
        -t ${name} \
        -u ${couchdb2_user} \
        env ERL_FLAGS="${erl_flags}" \
        HOME=/var/run/couchdb2 \
        ERL_CRASH_DUMP=/var/run/couchdb2/erl_crash.dump \
        COUCHDB_QUERY_SERVER_JAVASCRIPT="%%APPDIR%%/bin/couchjs %%APPDIR%%/share/server/main.js" \
        COUCHDB_QUERY_SERVER_COFFEESCRIPT="%%APPDIR%%/bin/couchjs %%APPDIR%%/share/server/main-coffee.js" \
        ${command}
}

couchdb2_stop()
{
    echo -n "Stopping ${name}: "
    retval=0
    if ! status_quiet
    then
        echo "already stopped"
        return 1
    else
        couchdb2_pids=$(/bin/pgrep -ifU ${couchdb2_user} ${name})
        kill ${couchdb2_pids}
        wait_for_pids ${couchdb2_pids}
        retval=$?
        echo "stopped"
    fi
    return $retval
}

couchdb2_status()
{
    /bin/pgrep -ifU ${couchdb2_user} ${name}  > /dev/null && status="$?" || status="$?"
    if [ "${status}" = 0 ]; then
        echo "${name} is running"
        return 0
    elif [ "${status}" = 4 ]; then
        echo "could not access PID file for ${name}"
        return ${status}
    else
        echo "${name} is not running"
        return ${status}
    fi
}

status_quiet()
{
    couchdb2_status >/dev/null 2>&1
}

run_rc_command $1