diff --git a/validate_workflow.sh b/validate_workflow.sh index 346d1f80ccb7d07d4c5f5e5819a3bb350f891c0c..c62b1e4b59f6a7e39c4ccb710234bff4b98dc125 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 }