You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.1 KiB
62 lines
1.1 KiB
#!/bin/bash
|
|
|
|
# shellcheck disable=SC1091
|
|
source scripts/helpers/format.sh
|
|
|
|
operatingSystem=$(uname -s)
|
|
if [ "$operatingSystem" != "Linux" ] && [ "$operatingSystem" != "Darwin" ]; then
|
|
operatingSystem="Windows"
|
|
fi
|
|
|
|
function runJob {
|
|
|
|
local job=$1
|
|
local progressMsg=$2
|
|
local successMsg=$3
|
|
local errMsg=$4
|
|
local logLevel=$5
|
|
|
|
local tmpScript
|
|
local tmpErrFile
|
|
local childPid
|
|
local returnCode
|
|
|
|
# let's absolutely don't take care of this fake os
|
|
if [ "$operatingSystem" == "Windows" ]; then
|
|
tmpScript=$(mktemp)
|
|
echo "$job" > "$tmpScript"
|
|
bash "$tmpScript"
|
|
rm "$tmpScript"
|
|
return $?
|
|
fi
|
|
|
|
tmpErrFile=$(mktemp)
|
|
|
|
formatProgress "$progressMsg"
|
|
|
|
if [ "$logLevel" == "verbose" ]; then
|
|
echo
|
|
echo "$job" | bash &
|
|
else
|
|
echo "$job" | bash >/dev/null 2>"$tmpErrFile" &
|
|
fi
|
|
|
|
childPid=$!
|
|
|
|
# prevent set -e to exit if child fail
|
|
wait $childPid && returnCode=$? || returnCode=$?
|
|
|
|
if [ "$logLevel" != "verbose" ]; then
|
|
clearLine
|
|
fi
|
|
|
|
if [ $returnCode -eq 0 ]; then
|
|
formatSuccess "$successMsg"
|
|
else
|
|
formatError "$errMsg"
|
|
formatError "$(cat "$tmpErrFile")"
|
|
fi
|
|
|
|
rm "$tmpErrFile"
|
|
return $returnCode
|
|
}
|
|
|