c60f0e1a81c07f23a42f2fdfaebf747bcdd30ae7Tim Reddehase#!/bin/bash
c60f0e1a81c07f23a42f2fdfaebf747bcdd30ae7Tim Reddehase
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehaseabort_unless_invoker_installed() {
d731d2608b96a59e2dbef7cdd0cd8f3d7eed955aTim Reddehase result="$(which invoker 2>&1)"
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase if [[ "$?" -ne "0" ]]; then
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase echo ">>> Invoker not installed, please install"
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase exit 1
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase fi
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase}
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehaseinitialize_new_invoker_instance() {
d731d2608b96a59e2dbef7cdd0cd8f3d7eed955aTim Reddehase result="$(invoker list 2>&1)"
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase if [[ "$?" -eq "0" ]]; then
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase echo ">>> Invoker running, restarting..."
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase result=`invoker stop 2>&1`
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase else
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase echo ">>> Invoker not running, starting..."
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase fi
fbd3bcafb83d4e1c2d9e02bbe69f16a262a4dc6eTim Reddehase invoker start invoker.ini --daemon 2>&1 > /dev/null
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase}
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase
c60f0e1a81c07f23a42f2fdfaebf747bcdd30ae7Tim Reddehaseexecute_or_die() {
c60f0e1a81c07f23a42f2fdfaebf747bcdd30ae7Tim Reddehase cmd="$1"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase execute_or_die_unless_match "$cmd" ""
c60f0e1a81c07f23a42f2fdfaebf747bcdd30ae7Tim Reddehase}
c60f0e1a81c07f23a42f2fdfaebf747bcdd30ae7Tim Reddehase
341d3f7b871686bb3bca90eba12bcf56085d90b1Tim Reddehase# An empty expression will not be checked. This in fact means, that there is no
341d3f7b871686bb3bca90eba12bcf56085d90b1Tim Reddehase# check for 'empty-output', but seeing as that should probably be never the
341d3f7b871686bb3bca90eba12bcf56085d90b1Tim Reddehase# case it is a good way to combine both execute_or... versions
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehaseexecute_or_die_unless_match() {
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase cmd="$1"
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase expression="$2"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_exec_command "$cmd"
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase result="$($cmd 2>&1)"
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase state="$?"
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase if [[ "$state" -ne "0" ]]; then
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_finish_exec_command "$cmd" "0"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase if [[ -n "$expression" ]]; then
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase check_and_handle_result_text "$result" "$expression" "$cmd"
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase else
eae91e343bf5b48b7758bdfe1f7676e99ba7f437Tim Reddehase abort_cmd "$cmd" "$result"
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase fi
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase else
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_finish_exec_command "$cmd" "1"
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase fi
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase}
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase
341d3f7b871686bb3bca90eba12bcf56085d90b1Tim Reddehase# Currently the match cannot be a 'normal' regular expression.
341d3f7b871686bb3bca90eba12bcf56085d90b1Tim Reddehase# This however can be changed by adding a 'P' to the switches list for the
341d3f7b871686bb3bca90eba12bcf56085d90b1Tim Reddehase# grep-command.
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehasecheck_and_handle_result_text() {
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase result="$1"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase expression="$2"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase cmd="$3"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase echo "$result" | grep -q "$expression"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase matchstate="$?"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase if [[ "$matchstate" -ne "0" ]]; then
eae91e343bf5b48b7758bdfe1f7676e99ba7f437Tim Reddehase abort_cmd "$cmd" "$result"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase else
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_ignoring_failed_command "$cmd"
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase fi
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase}
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehaseabort_cmd() {
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase cmd="$1"
eae91e343bf5b48b7758bdfe1f7676e99ba7f437Tim Reddehase message="$2"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_failed_command "$cmd" "$message"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase exit 1
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase}
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehaseprint_exec_command() {
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase cmd="$1"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase echo -ne ">>> Executing '$cmd'\r"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase}
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehaseprint_finish_exec_command() {
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase cmd="$1"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase success="$2"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase if [[ "$success" -eq "1" ]]; then
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_colored_or_not ">>> Executed '$cmd'!" "32"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase else
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_colored_or_not ">>> Executed '$cmd'!" "31"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase fi
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase}
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehaseprint_ignoring_failed_command() {
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase cmd="$1"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_colored_or_not " >> Failed to execute '$cmd', but ignoring the result." "33"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase}
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehaseprint_failed_command() {
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase cmd="$1"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase failed_message="$2"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase print_colored_or_not " >> Failed to execute '$cmd', aborting further commands." "31"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase if [[ -n "$failed_message" ]]; then
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase echo " > Message:"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase echo "$failed_message"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase fi
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase}
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehaseprint_colored_or_not() {
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase message="$1"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase color_code="$2"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase if [[ "$colored_output" -eq "1" ]]; then
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase echo -e "\033[${color_code}m${message}\033[0m"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase else
eae91e343bf5b48b7758bdfe1f7676e99ba7f437Tim Reddehase echo "$message"
eae91e343bf5b48b7758bdfe1f7676e99ba7f437Tim Reddehase fi
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase}
4356d89b99a2cc4d4f5b0736cad1b62f437189d2Tim Reddehase
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehaserun_invoker="1"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehasecolored_output="1"
cb09f778ad6878e2a08030d75410c130c737ba41Tim Reddehase
867f7a8008e34c7c603ce8a56b9916a02564e330Eugen Kuksacwd="$(pwd)"
867f7a8008e34c7c603ce8a56b9916a02564e330Eugen Kuksarails_root=$(cd "$(dirname $0)/.."; pwd)
867f7a8008e34c7c603ce8a56b9916a02564e330Eugen Kuksacd $cwd
a9a1c7880a41a3190be49340c8ccd5af7f1d6dc6Eugen Kuksaexport GIT_HOME="${GIT_HOME:-$rails_root/tmp/git}"
a9a1c7880a41a3190be49340c8ccd5af7f1d6dc6Eugen Kuksa
37cc69ff6c896d2259221d7f912c3a4113cbfccbEugen Kuksafor i in "$@"; do
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksacase $i in
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa -d|--download-fixtures)
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa export DOWNLOAD_FIXTURES=true
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa ;;
6f6f5298a9d018416275e6e664bf7a8d7c40016eEugen Kuksa -r|--restart)
6f6f5298a9d018416275e6e664bf7a8d7c40016eEugen Kuksa RESTART_INVOKER_ONLY=true
37f8751b279b9fbe3033dfdc2b08a67083878afbEugen Kuksa ;;
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehase --no-invoker)
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehase run_invoker="0"
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehase ;;
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase --no-colors)
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase colored_output="0"
d7cba5fad112ca279b14a7677f9199ee90502158Tim Reddehase ;;
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa *)
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa # unknown option
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa ;;
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa esac
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa shift
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksadone
0e9a600d7b5b2bf21d7105b4513b9b5d6e85ba03Eugen Kuksa
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehaseif [[ "$run_invoker" -eq "1" ]]; then
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehase abort_unless_invoker_installed
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehase initialize_new_invoker_instance
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehasefi
2ee846646647982d31bd22bbb48bad2b98f13162Tim Reddehase
37cc69ff6c896d2259221d7f912c3a4113cbfccbEugen Kuksaif [[ !($RESTART_INVOKER_ONLY) ]]; then
996c28c2e9f755a6831378e9bc4c4513bc5e45caTim Reddehase execute_or_die_unless_match "bundle exec rake elasticsearch:wipe" "Elasticsearch::Transport::Transport::Errors::NotFound"
37f8751b279b9fbe3033dfdc2b08a67083878afbEugen Kuksa execute_or_die "bundle exec rake db:migrate:clean"
37f8751b279b9fbe3033dfdc2b08a67083878afbEugen Kuksa execute_or_die "redis-cli flushdb"
37f8751b279b9fbe3033dfdc2b08a67083878afbEugen Kuksa execute_or_die "bundle exec rake git:compile_cp_keys"
37f8751b279b9fbe3033dfdc2b08a67083878afbEugen Kuksa execute_or_die "bundle exec rake db:seed"
37f8751b279b9fbe3033dfdc2b08a67083878afbEugen Kuksafi