~ salmonella-environment-setup (master) a9b30347fdcd2cb4b8aaded9e4e980e38a34aaa2


commit a9b30347fdcd2cb4b8aaded9e4e980e38a34aaa2
Author:     Mario Domenech Goulart <mario@parenteses.org>
AuthorDate: Mon Mar 16 18:44:52 2020 +0100
Commit:     Mario Domenech Goulart <mario@parenteses.org>
CommitDate: Mon Mar 16 18:46:28 2020 +0100

    run-salmonella.sh: add support for running hooks
    
    The initial idea is to make hooks update the salmonella components
    between executions of salmonella-run-publish, as it is difficult to
    find a time slot to manually update them.

diff --git a/run-salmonella.sh b/run-salmonella.sh
index 9cb65af..724d6b8 100755
--- a/run-salmonella.sh
+++ b/run-salmonella.sh
@@ -1,6 +1,8 @@
 #! /bin/sh
 
-SRC_CONF_DIR=$(readlink -f "$(dirname "$0")")/conf
+ROOT_DIR=$(readlink -f "$(dirname "$0")")
+SRC_CONF_DIR=$ROOT_DIR/conf
+HOOKS_DIR=$ROOT_DIR/hooks
 LOCAL_CONF_DIR=$HOME/.salmonella-run-publish
 WORK_DIR=$HOME/salmonella/build
 LOG_DIR=$HOME/salmonella
@@ -30,7 +32,6 @@ export SALMONELLA_REPORTS_DIR=$HOME/salmonella/reports
 OS=$($CHICKEN_4_PREFIX/bin/csi -p '(software-version)')
 ARCH=$($CHICKEN_4_PREFIX/bin/csi -p '(machine-type)')
 
-# FIXME: make it an array
 settings_files="\
     $SRC_CONF_DIR/shell-settings/${OS}/settings.sh
     $SRC_CONF_DIR/shell-settings/${OS}-${ARCH}/settings.sh
@@ -46,6 +47,32 @@ for settings_file in $settings_files; do
 done
 
 
+run_hooks() {
+    # Call hooks scripts, passing $OS, $ARCH, CHICKEN_4_PREFIX and
+    # CHICKEN_5_PREFIX as arguments
+    local log
+    local hook
+    local hook_dir
+
+    log=${LOG_DIR}/hooks.log
+
+    mkdir -p "$LOG_DIR"
+    rm -f "$log"
+
+    for hook_dir in "${HOOKS_DIR}/common" "${HOOKS_DIR}/${OS}" "${HOOKS_DIR}/${OS}/${ARCH}"
+    do
+        if [ -d "$hook_dir" ]; then
+            for hook in "${hook_dir}/"*; do
+                if [ -x "$hook" ]; then
+                    echo "=== Running hook $hook ==="
+                    "$hook" "$OS" "$ARCH" "$CHICKEN_4_PREFIX" "$CHICKEN_5_PREFIX" > "$log" 2>&1
+                fi
+            done
+        fi
+    done
+}
+
+
 main() {
     confs=$@
 
@@ -89,6 +116,8 @@ main() {
             debugbuild=
         fi
 
+        run_hooks
+
         conf_path=$SRC_CONF_DIR/${conf}.conf
         local_conf_path=$LOCAL_CONF_DIR/${conf}.conf
         if [ -e "$local_conf_path" ]; then
Trap