#!/bin/bash
##
## Dovecot FTS: Trigger Solr to optimize index
## Copyright (c) 2014 SATOH Fumiyasu @ OSS Technlogy Corp., Japan
##
## License: GNU General Public License version 3
##
## Required external commands:
##   curl(1)
##

set -u
set -o pipefail || exit 1 ## Depend on bash 3.0+ or zsh 5.0+

export LANG=C
export PATH="/opt/osstech/bin:$PATH"

doveconf="${DOVECONF:-/opt/osstech/bin/doveconf}"

solr_url=$(
  "$doveconf" plugin |sed -n 's/^ *fts_solr *=.*url=\([^ ]*\).*$/\1/p'
)
if [[ -z $solr_url ]]; then
  exit 0
fi

solr_response=$(
  ## Pass URL through stdio to hide credentials in URL from ps(1)
  echo "url ${solr_url}update?optimize=true&wt=json&indent=true" \
  |curl \
    --config - \
    --silent \
    --dump-header - \
    2>&1 \
  ;
)
curl_ret="$?"

if [[ $curl_ret -ne 0 || $solr_response != HTTP/1.[01]\ 2??* ]]; then
  echo "$0: ERROR: curl command failed: $curl_ret" 1>&2
  if [[ -n $solr_response ]]; then
    echo "$solr_response" |sed "s#^#$0: ERROR:   #" 1>&2
  fi
  if [[ $curl_ret -ne 0 ]]; then
    exit "$curl_ret"
  fi
  exit 99
fi

exit 0

