From 8cfebf44dd9e1489af17fdc6c972a001a58351c6 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <art1@andreas-romeyke.de>
Date: Thu, 13 Oct 2022 14:58:58 +0200
Subject: [PATCH] - added get_logfile() to calc logfile name - added log output
 in result-folder - added handle_input_if_requested() to sort/delete input
 files - added shorthand if first validation is successful in scan_file()

---
 validate_workflow.sh | 47 +++++++++++++++++++++++++++++++++++++-------
 1 file changed, 40 insertions(+), 7 deletions(-)

diff --git a/validate_workflow.sh b/validate_workflow.sh
index 346d1f8..c62b1e4 100755
--- a/validate_workflow.sh
+++ b/validate_workflow.sh
@@ -346,14 +346,41 @@ exec_cmd() {
     ftype=$2
     workflow=$3
     stage=$4
+    log=$5
     start_t=$(date +"%s")
     debug "scan_file, calling cmd='$cmd'"
-    $cmd || ( error "failed call of '$cmd', $?"; exit 1 )
+    $cmd >>"$log" 2>&1
     is_valid=$?
     stop_t=$(date +"%s")
     duration=$((stop_t - start_t))
-    debug "scan_file, duration=$duration is_valid=$is_valid"
+    debug "scan_file, duration=$duration is_valid=$is_valid log=$log"
     update_statistics "$is_valid" "$duration" "$ftype" "$workflow" "$stage"
+    echo "$is_valid"
+}
+
+handle_input_if_requested() {
+    filename=$1
+    is_valid=$2
+    debug "handle_input_if_requested, filename=$filename is_valid=$is_valid"
+    if [ "$FILES_MODE" = "sort" ]; then
+        if [ "$is_valid" -eq 0 ]; then
+            debug "handle_input_if_requested, mv $filename to $VALID_FOLDER, because valid"
+            mv "$filename" "$VALID_FOLDER"
+        else
+            debug "handle_input_if_requested, mv $filename to $INVALID_FOLDER, because invalid"
+            mv "$filename" "$INVALID_FOLDER"
+        fi
+    elif [ "$FILES_MODE" = "delete" ]; then
+        debug "handle_input_if_requested, rm $filename from watchfolder $WATCH_FOLDER"
+        rm -f "$filename"
+    fi
+}
+
+get_logfile() {
+    filename=$1
+    logname=$(echo "$filename"| sed -e "s#^${WATCH_FOLDER}#${RESULT_FOLDER}#"  -e "s#\$#.log#")
+    debug "get_logfile, logname=$logname (filename=$filename)"
+    echo "$logname"
 }
 
 
@@ -362,19 +389,25 @@ scan_file() {
     debug "scan_file, using filename: $filename"
     mimetype=$(get_mimetype "$filename")
     ftype=$(prepare_ftype "$mimetype")
+    logname=$(get_logfile "$filename")
     if [ "$MODE" = "auto" ]; then
         # try best guess
         MODE=$(estimate_mode "$mimetype")
     fi
     if [ "$STAGE" = "any" ]; then
+        is_valid=0
         for stage in current upcoming; do
-            cmd=$(prepare_cmd "$MODE" "$ftype" "$stage" | sed -e "s#FILE#'$filename'#")
-            exec_cmd "$cmd" "$ftype" "$MODE" "$stage"
+            cmd=$(prepare_cmd "$MODE" "$ftype" "$stage" | sed -e "s#FILE#$filename#")
+            is_valid=$(exec_cmd "$cmd" "$ftype" "$MODE" "$stage" "$logname")
+            if [ "$is_valid" -eq 0 ]; then 
+                break
+            fi
         done
+        handle_input_if_requested "$filename" "$is_valid"
     else
-        cmd=$(prepare_cmd "$MODE" "$ftype" "$STAGE" | sed -e "s#FILE#'$filename'#")
-        exec_cmd "$cmd" "$ftype" "$MODE" "$stage"
-
+        cmd=$(prepare_cmd "$MODE" "$ftype" "$STAGE" | sed -e "s#FILE#$filename#")
+        is_valid=$(exec_cmd "$cmd" "$ftype" "$MODE" "$stage" "$logname")
+        handle_input_if_requested "$filename" "$is_valid"
     fi
 
 }
-- 
GitLab