#!/bin/bash

###############################################################################
# External Runtime - вспомогательный скрипт для запуска хуков в отдельной     #
# среде, например в контейнере.                                               #
# Использование:                                                              #
# 1. Подключите этот файл в скрипт хука:                                      #
#    source . $(pwd)/.git_hooks/external_runtime                              #
# 2. Создайте выше по файловой системе файл .external-runtime,                #
#    содержащий переменную EXTERNAL_RUNTIME_COMMAND, например:                #
#    EXTERNAL_RUNTIME_COMMAND="ensi exec-script"
#    Этот файл должен отсутствовать в среде запуска.
###############################################################################

EXTERNAL_RUNTIME_FILE=".external-runtime"

ESC_SEQ="\x1b["
COL_RESET=$ESC_SEQ"39;49;00m"
COL_BLUE=$ESC_SEQ"0;34m"

findUp () {
  path=$(pwd)
  while [[ "$path" != "" && ! -e "$path/$1" ]]; do
    path=${path%/*}
  done
  echo "$path"
}

# search external runtime file
rcpath=$(findUp "$EXTERNAL_RUNTIME_FILE")
if [[ "$rcpath" != "" ]]; then
    # source it and run hook in via runtime command
    . $rcpath/$EXTERNAL_RUNTIME_FILE
    printf "$COL_BLUE%s$COL_RESET\n" "External runtime has been found. Running hook with '$EXTERNAL_RUNTIME_COMMAND' command"
    $EXTERNAL_RUNTIME_COMMAND $0
    exit $?
fi