#!/bin/sh
#
-# koha-rebuild-zebra -- Rebuild the Zebra database for a Koha instance.
+# koha-rebuild-zebra - Rebuild the Zebra database for Koha instances.
# Copyright 2010 Catalyst IT, Ltd
#
# This program is free software: you can redistribute it and/or modify
set -e
+# Read configuration variable file if it is present
+[ -r /etc/default/koha-common ] && . /etc/default/koha-common
+
+# include helper functions
+if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then
+ . "/usr/share/koha/bin/koha-functions.sh"
+else
+ echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2
+ exit 1
+fi
+
+toggle_biblios_only()
+{
+ biblios_only="yes"
+ biblios="yes"
+ if [ "$authorities_only" != "yes" ]; then
+ authorities="no"
+ fi
+}
+
+toggle_authorities_only()
+{
+ authorities_only="yes"
+ authorities="yes"
+ if [ "$biblios_only" != "yes" ]; then
+ biblios="no"
+ fi
+}
+
+run_rebuild_zebra()
+{
+ local instancename=$1; shift
+
+ if [ "$USE_INDEXER_DAEMON" = "no" ] ||
+ [ "${full_reindex}" = "yes" ] ||
+ [ "${force}" = "yes" ] ; then
+
+ if [ "$DEV_INSTALL" = "" ]; then
+ KOHA_BINDIR=$KOHA_HOME/bin
+ else
+ KOHA_BINDIR=$KOHA_HOME/misc
+ fi
+
+ # TODO: This comment is here to remind us that we should make
+ # rebuild_zebra.pl return error codes on failure
+ if sudo -u "$instancename-koha" -H \
+ env PERL5LIB=$PERL5LIB \
+ KOHA_CONF="/etc/koha/sites/$instancename/koha-conf.xml" \
+ $KOHA_BINDIR/migration_tools/rebuild_zebra.pl $@ ; then
+ return 0
+ else
+ return 1
+ fi
+ fi
+}
+
+usage()
+{
+ local scriptname=$0
+ cat <<EOF
+Rebuild the Zebra indexes for Koha instances. The default behaviour
+is to do an incremental rebuild.
+
+Usage: $scriptname [options] instancename1 instancename2...
+Options:
+ --authorities|-a Only run process for authorities.
+ --biblios|-b Only run process for biblios.
+ --full|-f Does a reindex of the whole collection.
+ --force Run incremental indexing even if USE_INDEXER_DAEMON="yes"
+ --quiet|-q Sometimes be a bit quieter for scripts/cronjobs.
+ --verbose|-v Be verbose. Can be multiple.
+ --help|-h Print this help.
+
+
+Note: Any other options are passed directly to rebuild_zebra.pl.
+EOF
+}
+
+# Default parameters
opt_idx="-z"
-opt_xml="-x"
+opt_verbose=""
opts_other=""
+biblios_only="no"
+authorities_only="no"
+biblios="yes"
+authorities="yes"
+force="no"
+full_reindex="no"
+# The '-q' option is intended to prevent the cronjob causing this to output
+# help information if there are no instances defined.
+quiet="no"
+
+# Read parameters
while [ -n "$*" ]; do
case "$1" in
- -u|--usmarc)
- opt_xml=""
- ;;
+ -h|--help)
+ usage ; exit 0
+ ;;
+ -b|--biblios)
+ toggle_biblios_only
+ ;;
+ -a|--authorities)
+ toggle_authorities_only
+ ;;
-f|--full)
- opt_idx="-r"
- ;;
+ full_reindex="yes"
+ opt_idx="-r"
+ ;;
+ --force)
+ force="yes"
+ ;;
+ -v|--verbose)
+ opt_verbose="$opt_verbose -v"
+ ;;
+ -q|--quiet)
+ quiet="yes"
+ ;;
-*)
opts_other="$opts_other $1";
;;
shift
done
+# Optionally use alternative paths for a dev install
+adjust_paths_dev_install $1
+# Parse command line.
+if [ $# -lt 1 ]; then
+ if [ "$quiet" = "no" ]; then
+ usage
+ die "Missing instance name."
+ else
+ exit
+ fi
+fi
-function run_zebra () {
- name=$1; shift
-
- sudo -u "$name-koha" -H \
- env PERL5LIB=/usr/share/koha/lib \
- KOHA_CONF="/etc/koha/sites/$name/koha-conf.xml" \
- /usr/share/koha/bin/migration_tools/rebuild_zebra.pl $@
-}
-
+# Loop over instance names
for name in "$@"
do
- run_zebra $name -b $opt_idx $opt_xml $opts_other
- run_zebra $name -a $opt_idx $opts_other
+ if is_instance $name; then
+ if [ "$biblios" = "yes" ]; then
+ if ! run_rebuild_zebra $name \
+ -b $opt_verbose $opt_idx $opts_other; then
+ warn "Something went wrong rebuilding biblio indexes for $name"
+ fi
+ fi
+ if [ "$authorities" = "yes" ]; then
+ if ! run_rebuild_zebra $name \
+ -a $opt_verbose $opt_idx $opts_other ; then
+ warn "Something went wrong rebuilding authority indexes for $name"
+ fi
+ fi
+ else
+ warn "Unknown instance $name."
+ fi
done
+
+exit 0