aboutsummaryrefslogtreecommitdiffstats
path: root/script/compact-xapian-database
blob: f16c4ca37cbc72eb8f907936ed58759591537e70 (plain)
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
#!/bin/bash

export RAILS_ENV=$1
set -e

cd "$(dirname "$0")"/..

if [ -x /usr/bin/xapian-compact ]; then
    XAPIAN_DB_DIR=$( pwd )/lib/acts_as_xapian/xapiandbs
    if [ -e "$XAPIAN_DB_DIR/$RAILS_ENV.new" ]; then
	echo >&2 "Didn't compact Xapian database because there was an existing database at $XAPIAN_DB_DIR/$RAILS_ENV.new"
	exit 1
    else
	OWNER=$(stat -c %U "$XAPIAN_DB_DIR/$RAILS_ENV")
	export XAPIAN_DB_DIR RAILS_ENV
	su "$OWNER" <<SU
    commonlib/bin/output-on-error xapian-compact "\$XAPIAN_DB_DIR/\$RAILS_ENV" "\$XAPIAN_DB_DIR/\$RAILS_ENV.new"
SU
	mv "$XAPIAN_DB_DIR/$RAILS_ENV" "$XAPIAN_DB_DIR/$RAILS_ENV.tmp"
	mv "$XAPIAN_DB_DIR/$RAILS_ENV.new" "$XAPIAN_DB_DIR/$RAILS_ENV"
	rm -rf "$XAPIAN_DB_DIR/$RAILS_ENV.tmp"
	commonlib/bin/output-on-error /etc/init.d/apache2 restart
    fi
else
    echo >&2 "Could not find xapian-compact script; have you installed xapian-tools?"
    exit 1
fi