mirror of
https://github.com/Unimatrix0/update_ombi.git
synced 2025-07-06 04:51:53 -07:00
feat(updater): remove loop
This commit is contained in:
parent
9846ce0fec
commit
51a0510143
1 changed files with 212 additions and 219 deletions
431
update_ombi.sh
431
update_ombi.sh
|
@ -60,75 +60,76 @@ archshort=${arch:0:3}
|
|||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--verbosity|-v=*)
|
||||
shift
|
||||
if [[ ${1#*=} =~ ^-?[0-8]$ ]]; then
|
||||
verbosity="${1#*=}"
|
||||
else
|
||||
printf "****************************\n"
|
||||
printf "* Error: Invalid verbosity.*\n"
|
||||
printf "****************************\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
--force|-f=*)
|
||||
shift
|
||||
if [[ ${1#*=} =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
force="${1#*=}"
|
||||
else
|
||||
printf "****************************\n"
|
||||
printf "* Error: Invalid version. *\n"
|
||||
printf "****************************\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
--verbosity | -v=*)
|
||||
shift
|
||||
if [[ ${1#*=} =~ ^-?[0-8]$ ]]; then
|
||||
verbosity="${1#*=}"
|
||||
else
|
||||
printf "****************************\n"
|
||||
printf "* Error: Invalid argument. *\n"
|
||||
printf "* Error: Invalid verbosity.*\n"
|
||||
printf "****************************\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
--force | -f=*)
|
||||
shift
|
||||
if [[ ${1#*=} =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
force="${1#*=}"
|
||||
else
|
||||
printf "****************************\n"
|
||||
printf "* Error: Invalid version. *\n"
|
||||
printf "****************************\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
printf "****************************\n"
|
||||
printf "* Error: Invalid argument. *\n"
|
||||
printf "****************************\n"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
declare -A LOG_LEVELS=([-1]="none" [0]="emerg" [1]="alert" [2]="crit" [3]="err" [4]="warning" [5]="notice" [6]="info" [7]="debug" [8]="trace")
|
||||
function .log () {
|
||||
local LEVEL=${1}
|
||||
shift
|
||||
if [[ $verbosity =~ ^-?[0-8]$ ]]; then
|
||||
if [ $verbosity -ge $LEVEL ]; then
|
||||
echo "[$(date '+%H:%M:%S')] [${LOG_LEVELS[$LEVEL]}]" "$@"
|
||||
fi
|
||||
fi
|
||||
if [ $verbosity -eq 8 ] || [ $LEVEL -ne 8 ]; then
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S %Z' -u)] [${LOG_LEVELS[$LEVEL]}]" "$@" >> $logfile
|
||||
function .log() {
|
||||
local LEVEL=${1}
|
||||
shift
|
||||
if [[ $verbosity =~ ^-?[0-8]$ ]]; then
|
||||
if [ $verbosity -ge $LEVEL ]; then
|
||||
echo "[$(date '+%H:%M:%S')] [${LOG_LEVELS[$LEVEL]}]" "$@"
|
||||
fi
|
||||
fi
|
||||
if [ $verbosity -eq 8 ] || [ $LEVEL -ne 8 ]; then
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S %Z' -u)] [${LOG_LEVELS[$LEVEL]}]" "$@" >>$logfile
|
||||
fi
|
||||
}
|
||||
|
||||
unzip-strip() (
|
||||
local zip=$1
|
||||
local dest=${2:-.}
|
||||
local temp=$(mktemp -d) && tar -zxf "$zip" -C "$temp" && mkdir -p "$dest" &&
|
||||
local zip=$1
|
||||
local dest=${2:-.}
|
||||
local temp=$(mktemp -d) && tar -zxf "$zip" -C "$temp" && mkdir -p "$dest" &&
|
||||
shopt -s dotglob && local f=("$temp"/*) &&
|
||||
if (( ${#f[@]} == 1 )) && [[ -d "${f[0]}" ]] ; then
|
||||
cp -r "$temp"/*/* "$dest"
|
||||
if ((${#f[@]} == 1)) && [[ -d "${f[0]}" ]]; then
|
||||
cp -r "$temp"/*/* "$dest"
|
||||
else
|
||||
cp -r "$temp"/* "$dest"
|
||||
cp -r "$temp"/* "$dest"
|
||||
fi && rm -rf "${temp:?}"/* "$temp"
|
||||
)
|
||||
|
||||
# Import any custom config to override the defaults, if necessary
|
||||
configfile="$(dirname $0)/update_ombi.conf"
|
||||
if [ -e $configfile ]; then
|
||||
source $configfile > /dev/null 2>&1
|
||||
.log 6 "Script config file found...parsing..."
|
||||
if [ $? -ne 0 ] ; then
|
||||
.log 3 "Unable to use config file...using defaults..."
|
||||
else
|
||||
.log 6 "Parsed config file"
|
||||
fi
|
||||
source $configfile >/dev/null 2>&1
|
||||
.log 6 "Script config file found...parsing..."
|
||||
if [ $? -ne 0 ]; then
|
||||
.log 3 "Unable to use config file...using defaults..."
|
||||
else
|
||||
.log 6 "Parsed config file"
|
||||
fi
|
||||
else
|
||||
.log 6 "No config file found...using defaults..."
|
||||
.log 6 "No config file found...using defaults..."
|
||||
fi
|
||||
|
||||
.log 6 "$name v$version"
|
||||
|
@ -136,109 +137,104 @@ fi
|
|||
scriptuser=$(whoami)
|
||||
.log 7 "Update script running as: $scriptuser"
|
||||
if [ -e $ombiservicefile ]; then
|
||||
.log 6 "Ombi service file for systemd found...parsing..."
|
||||
parseresults="Parsing complete: "
|
||||
ombiservice=$(<$ombiservicefile)
|
||||
installdir=$(grep -Po '(?<=WorkingDirectory=)(\S|(?<=\\)\s)+' <<< "$ombiservice")
|
||||
if [ -n "${installdir}" ]; then
|
||||
parseresults+="InstallDir: $installdir, "
|
||||
fi
|
||||
user=$(grep -Po '(?<=User=)(\w+)' <<< "$ombiservice")
|
||||
if [ -n "${user}" ]; then
|
||||
parseresults+="User: $user, "
|
||||
fi
|
||||
group=$(grep -Po '(?<=Group=)(\w+)' <<< "$ombiservice")
|
||||
if [ -n "${group}" ]; then
|
||||
parseresults+="Group: $group, "
|
||||
fi
|
||||
url=$(grep -Po '(?<=\-\-host )(http://.+)$' <<< "$ombiservice")
|
||||
ip=$(grep -Po '(?<=http://)((\d{1,3}\.){3}\d{1,3})(?=:)' <<< "$url")
|
||||
if [ -n "${ip}" ]; then
|
||||
parseresults+="IP: $ip, "
|
||||
fi
|
||||
port=$(grep -Po '(?<=:)(\d+)$' <<< "$url")
|
||||
if [ -n "${port}" ]; then
|
||||
parseresults+="Port: $port "
|
||||
fi
|
||||
parseresults="${parseresults// / }"
|
||||
parseresults="${parseresults/%, /}"
|
||||
.log 6 "$parseresults"
|
||||
.log 6 "Ombi service file for systemd found...parsing..."
|
||||
parseresults="Parsing complete: "
|
||||
ombiservice=$(<$ombiservicefile)
|
||||
installdir=$(grep -Po '(?<=WorkingDirectory=)(\S|(?<=\\)\s)+' <<<"$ombiservice")
|
||||
if [ -n "${installdir}" ]; then
|
||||
parseresults+="InstallDir: $installdir, "
|
||||
fi
|
||||
user=$(grep -Po '(?<=User=)(\w+)' <<<"$ombiservice")
|
||||
if [ -n "${user}" ]; then
|
||||
parseresults+="User: $user, "
|
||||
fi
|
||||
group=$(grep -Po '(?<=Group=)(\w+)' <<<"$ombiservice")
|
||||
if [ -n "${group}" ]; then
|
||||
parseresults+="Group: $group, "
|
||||
fi
|
||||
url=$(grep -Po '(?<=\-\-host )(http://.+)$' <<<"$ombiservice")
|
||||
ip=$(grep -Po '(?<=http://)((\d{1,3}\.){3}\d{1,3})(?=:)' <<<"$url")
|
||||
if [ -n "${ip}" ]; then
|
||||
parseresults+="IP: $ip, "
|
||||
fi
|
||||
port=$(grep -Po '(?<=:)(\d+)$' <<<"$url")
|
||||
if [ -n "${port}" ]; then
|
||||
parseresults+="Port: $port "
|
||||
fi
|
||||
parseresults="${parseresults// / }"
|
||||
parseresults="${parseresults/%, /}"
|
||||
.log 6 "$parseresults"
|
||||
fi
|
||||
|
||||
if [ -z "${installdir}" ]; then
|
||||
.log 5 "InstallDir not parsed...setting to default: $defaultinstalldir"
|
||||
installdir="$defaultinstalldir"
|
||||
.log 5 "InstallDir not parsed...setting to default: $defaultinstalldir"
|
||||
installdir="$defaultinstalldir"
|
||||
fi
|
||||
if [ -z "${user}" ]; then
|
||||
.log 5 "User not parsed...setting to default: $defaultuser"
|
||||
user="$defaultuser"
|
||||
.log 5 "User not parsed...setting to default: $defaultuser"
|
||||
user="$defaultuser"
|
||||
fi
|
||||
if [ -z "${group}" ]; then
|
||||
.log 5 "Group not parsed...setting to default: $defaultgroup"
|
||||
group="$defaultgroup"
|
||||
.log 5 "Group not parsed...setting to default: $defaultgroup"
|
||||
group="$defaultgroup"
|
||||
fi
|
||||
if [ -z "${ip}" ]; then
|
||||
.log 5 "IP not parsed or set as \"*\"...setting to default: $defaultip"
|
||||
ip="$defaultip"
|
||||
.log 5 "IP not parsed or set as \"*\"...setting to default: $defaultip"
|
||||
ip="$defaultip"
|
||||
fi
|
||||
if [ -z "${port}" ]; then
|
||||
.log 5 "Port not parsed...setting to default: $defaultport"
|
||||
port="$defaultport"
|
||||
.log 5 "Port not parsed...setting to default: $defaultport"
|
||||
port="$defaultport"
|
||||
fi
|
||||
|
||||
.log 6 "Downloading Ombi update..."
|
||||
if [ "$archshort" = 'arm' ]; then
|
||||
filename='linux-arm64.tar.gz'
|
||||
else
|
||||
filename='linux-x64.tar.gz'
|
||||
filename='linux-arm64.tar.gz'
|
||||
else
|
||||
filename='linux-x64.tar.gz'
|
||||
fi
|
||||
declare -i i=1
|
||||
declare -i j=5
|
||||
while [ $i -le $j ]
|
||||
do
|
||||
.log 6 "Checking for latest version"
|
||||
if [ -z "$baseurl" ]; then
|
||||
json=$(curl -sL http://$ip:$port/$baseurl/api/v1/Update)
|
||||
else
|
||||
json=$(curl -sL http://$ip:$port/api/v1/Update)
|
||||
fi
|
||||
.log 8 "json: $json"
|
||||
latestversion=$(grep -Po '(?<="updateVersionString":")([^"]+)' <<< "$json")
|
||||
.log 7 "latestversion: $latestversion"
|
||||
if [ -n "$force" ]; then
|
||||
latestversion=$force
|
||||
.log 7 "forcing version: $latestversion"
|
||||
fi
|
||||
#json=$(curl -sL https://github.com/Ombi-app/Ombi.Releases/releases/tag/$latestversion)
|
||||
#.log 8 "json: $json"
|
||||
#jobId=$(grep -Po '(?<="jobId":")([^"]+)' <<< "$json")
|
||||
#.log 7 "jobId: $jobId"
|
||||
#version=$(grep -Po '(?<="version":")([^"]+)' <<< "$json")
|
||||
#.log 7 "version: $version"
|
||||
#if [ $latestversion != $version ]; then
|
||||
# .log 2 "Build version does not match expected version"
|
||||
# exit 1
|
||||
#fi
|
||||
#.log 6 "Latest version: $version...determining expected file size..."
|
||||
#size=$(curl -sL https://ci.appveyor.com/api/buildjobs/$jobId/artifacts | grep -Po '(?<="'$filename'","type":"File","size":)(\d+)')
|
||||
#.log 7 "size: $size"
|
||||
#if [ -e $size ]; then
|
||||
# if [ $i -lt $j ]; then
|
||||
# .log 3 "Unable to determine update file size...[attempt $i of $j]"
|
||||
# else
|
||||
# .log 2 "Unable to determine update file size...[attempt $i of $j]...Bailing!"
|
||||
# exit 2
|
||||
# fi
|
||||
# i+=1
|
||||
# continue
|
||||
#elif [[ $size =~ ^-?[0-9]+$ ]]; then
|
||||
# .log 6 "Expected file size: $size...downloading..."
|
||||
# break
|
||||
#else
|
||||
# .log 1 "Invalid file size value...bailing!"
|
||||
# exit 99
|
||||
#fi
|
||||
done
|
||||
.log 6 "Checking for latest version"
|
||||
if [ -z "$baseurl" ]; then
|
||||
json=$(curl -sL http://$ip:$port/$baseurl/api/v1/Update)
|
||||
else
|
||||
json=$(curl -sL http://$ip:$port/api/v1/Update)
|
||||
fi
|
||||
.log 8 "json: $json"
|
||||
latestversion=$(grep -Po '(?<="updateVersionString":")([^"]+)' <<<"$json")
|
||||
.log 7 "latestversion: $latestversion"
|
||||
if [ -n "$force" ]; then
|
||||
latestversion=$force
|
||||
.log 7 "forcing version: $latestversion"
|
||||
fi
|
||||
#json=$(curl -sL https://github.com/Ombi-app/Ombi.Releases/releases/tag/$latestversion)
|
||||
#.log 8 "json: $json"
|
||||
#jobId=$(grep -Po '(?<="jobId":")([^"]+)' <<< "$json")
|
||||
#.log 7 "jobId: $jobId"
|
||||
#version=$(grep -Po '(?<="version":")([^"]+)' <<< "$json")
|
||||
#.log 7 "version: $version"
|
||||
#if [ $latestversion != $version ]; then
|
||||
# .log 2 "Build version does not match expected version"
|
||||
# exit 1
|
||||
#fi
|
||||
#.log 6 "Latest version: $version...determining expected file size..."
|
||||
#size=$(curl -sL https://ci.appveyor.com/api/buildjobs/$jobId/artifacts | grep -Po '(?<="'$filename'","type":"File","size":)(\d+)')
|
||||
#.log 7 "size: $size"
|
||||
#if [ -e $size ]; then
|
||||
# if [ $i -lt $j ]; then
|
||||
# .log 3 "Unable to determine update file size...[attempt $i of $j]"
|
||||
# else
|
||||
# .log 2 "Unable to determine update file size...[attempt $i of $j]...Bailing!"
|
||||
# exit 2
|
||||
# fi
|
||||
# i+=1
|
||||
# continue
|
||||
#elif [[ $size =~ ^-?[0-9]+$ ]]; then
|
||||
# .log 6 "Expected file size: $size...downloading..."
|
||||
# break
|
||||
#else
|
||||
# .log 1 "Invalid file size value...bailing!"
|
||||
# exit 99
|
||||
#fi
|
||||
tempdir=$(mktemp -d)
|
||||
file="$tempdir/ombi_$version.tar.gz"
|
||||
wget --quiet --show-progress -O $file "https://github.com/Ombi-app/Ombi/releases/download/$latestversion/$filename"
|
||||
|
@ -250,38 +246,37 @@ wget --quiet --show-progress -O $file "https://github.com/Ombi-app/Ombi/releases
|
|||
.log 6 "Checking Ombi service status..."
|
||||
|
||||
declare -i running=0
|
||||
if [ "`systemctl is-active $ombiservicename`" == "active" ]; then
|
||||
running=1
|
||||
.log 6 "Ombi is active...attempting to stop..."
|
||||
declare -i i=1
|
||||
declare -i j=5
|
||||
while [ $i -le $j ]
|
||||
do
|
||||
if [ $scriptuser = "root" ]; then
|
||||
systemctl stop $ombiservicename.service > /dev/null 2>&1
|
||||
else
|
||||
sudo systemctl stop $ombiservicename.service > /dev/null 2>&1
|
||||
fi
|
||||
if [ $? -ne 0 ] || [ "`systemctl is-active $ombiservicename`" == "active" ] ; then
|
||||
if [ $i -lt $j ]; then
|
||||
.log 3 "Failed to stop Ombi...[attempt $i of $j]"
|
||||
sleep 1
|
||||
else
|
||||
.log 2 "Failed to stop Ombi...[attempt $i of $j]...Bailing!"
|
||||
exit 2
|
||||
fi
|
||||
i+=1
|
||||
continue
|
||||
elif [ "`systemctl is-active $ombiservicename`" == "inactive" ]; then
|
||||
.log 6 "Ombi stopped...installing update..."
|
||||
break
|
||||
else
|
||||
.log 1 "Unknown error...bailing!"
|
||||
exit 99
|
||||
fi
|
||||
done
|
||||
if [ "$(systemctl is-active $ombiservicename)" == "active" ]; then
|
||||
running=1
|
||||
.log 6 "Ombi is active...attempting to stop..."
|
||||
declare -i i=1
|
||||
declare -i j=5
|
||||
while [ $i -le $j ]; do
|
||||
if [ $scriptuser = "root" ]; then
|
||||
systemctl stop $ombiservicename.service >/dev/null 2>&1
|
||||
else
|
||||
sudo systemctl stop $ombiservicename.service >/dev/null 2>&1
|
||||
fi
|
||||
if [ $? -ne 0 ] || [ "$(systemctl is-active $ombiservicename)" == "active" ]; then
|
||||
if [ $i -lt $j ]; then
|
||||
.log 3 "Failed to stop Ombi...[attempt $i of $j]"
|
||||
sleep 1
|
||||
else
|
||||
.log 2 "Failed to stop Ombi...[attempt $i of $j]...Bailing!"
|
||||
exit 2
|
||||
fi
|
||||
i+=1
|
||||
continue
|
||||
elif [ "$(systemctl is-active $ombiservicename)" == "inactive" ]; then
|
||||
.log 6 "Ombi stopped...installing update..."
|
||||
break
|
||||
else
|
||||
.log 1 "Unknown error...bailing!"
|
||||
exit 99
|
||||
fi
|
||||
done
|
||||
else
|
||||
.log 6 "Ombi is not active...installing update..."
|
||||
.log 6 "Ombi is not active...installing update..."
|
||||
fi
|
||||
|
||||
declare -i timestamp=$(date +%s)
|
||||
|
@ -293,56 +288,54 @@ unzip-strip $file $installdir
|
|||
chown -R $user:$group $installdir
|
||||
|
||||
if [ $running -eq 1 ]; then
|
||||
.log 6 "Ownership set...starting Ombi..."
|
||||
declare -i i=1
|
||||
declare -i j=5
|
||||
while [ $i -le $j ]
|
||||
do
|
||||
if [ $scriptuser = "root" ]; then
|
||||
systemctl start $ombiservicename.service > /dev/null 2>&1
|
||||
.log 6 "Ownership set...starting Ombi..."
|
||||
declare -i i=1
|
||||
declare -i j=5
|
||||
while [ $i -le $j ]; do
|
||||
if [ $scriptuser = "root" ]; then
|
||||
systemctl start $ombiservicename.service >/dev/null 2>&1
|
||||
else
|
||||
sudo systemctl start $ombiservicename.service >/dev/null 2>&1
|
||||
fi
|
||||
if [ $? -ne 0 ] || [ "$(systemctl is-active $ombiservicename)" != "active" ]; then
|
||||
if [ $i -lt $j ]; then
|
||||
.log 3 "Failed to start Ombi...[attempt $i of $j]"
|
||||
sleep 1
|
||||
else
|
||||
.log 2 "Failed to start Ombi...[attempt $i of $j]...Bailing!"
|
||||
exit 3
|
||||
fi
|
||||
i+=1
|
||||
continue
|
||||
elif [ "$(systemctl is-active $ombiservicename)" == "active" ]; then
|
||||
.log 6 "Ombi started...waiting for confirmation..."
|
||||
declare -i k=1
|
||||
declare -i l=5
|
||||
while [ $k -le $l ]; do
|
||||
sleep 5
|
||||
curl -sIL $ip:$port >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
if [ $k -lt $l ]; then
|
||||
.log 4 "Ombi startup not confirmed...waiting 5 seconds...[attempt $k of $l]"
|
||||
else
|
||||
.log 2 "Ombi startup not confirmed...[attempt $k of $l]...bailing!"
|
||||
exit 4
|
||||
fi
|
||||
k+=1
|
||||
continue
|
||||
else
|
||||
sudo systemctl start $ombiservicename.service > /dev/null 2>&1
|
||||
.log 6 "Ombi startup confirmed...cleaning up..."
|
||||
break
|
||||
fi
|
||||
if [ $? -ne 0 ] || [ "`systemctl is-active $ombiservicename`" != "active" ] ; then
|
||||
if [ $i -lt $j ]; then
|
||||
.log 3 "Failed to start Ombi...[attempt $i of $j]"
|
||||
sleep 1
|
||||
else
|
||||
.log 2 "Failed to start Ombi...[attempt $i of $j]...Bailing!"
|
||||
exit 3
|
||||
fi
|
||||
i+=1
|
||||
continue
|
||||
elif [ "`systemctl is-active $ombiservicename`" == "active" ]; then
|
||||
.log 6 "Ombi started...waiting for confirmation..."
|
||||
declare -i k=1
|
||||
declare -i l=5
|
||||
while [ $k -le $l ]
|
||||
do
|
||||
sleep 5
|
||||
curl -sIL $ip:$port > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
if [ $k -lt $l ]; then
|
||||
.log 4 "Ombi startup not confirmed...waiting 5 seconds...[attempt $k of $l]"
|
||||
else
|
||||
.log 2 "Ombi startup not confirmed...[attempt $k of $l]...bailing!"
|
||||
exit 4
|
||||
fi
|
||||
k+=1
|
||||
continue
|
||||
else
|
||||
.log 6 "Ombi startup confirmed...cleaning up..."
|
||||
break
|
||||
fi
|
||||
done
|
||||
break
|
||||
else
|
||||
.log 1 "Unknown error...bailing!"
|
||||
exit 99
|
||||
fi
|
||||
done
|
||||
done
|
||||
break
|
||||
else
|
||||
.log 1 "Unknown error...bailing!"
|
||||
exit 99
|
||||
fi
|
||||
done
|
||||
else
|
||||
.log 6 "Ownership set...not starting Ombi"
|
||||
.log 6 "Ownership set...not starting Ombi"
|
||||
fi
|
||||
|
||||
.log 6 "Cleaning up..."
|
||||
|
@ -350,19 +343,19 @@ rm -rf "${tempdir:?}"/* "$tempdir"
|
|||
declare -i elapsedtime=$SECONDS
|
||||
declare -i minutes=0
|
||||
declare -i seconds=0
|
||||
if [ $elapsedtime -ge 60 ]; then
|
||||
minutes=$(($elapsedtime / 60))
|
||||
if [ $elapsedtime -ge 60 ]; then
|
||||
minutes=$(($elapsedtime / 60))
|
||||
fi
|
||||
seconds=$(($elapsedtime % 60))
|
||||
if [ $minutes -ge 2 ]; then
|
||||
duration="$minutes minutes"
|
||||
duration="$minutes minutes"
|
||||
elif [ $minutes -eq 1 ]; then
|
||||
duration="$minutes minute"
|
||||
duration="$minutes minute"
|
||||
fi
|
||||
if [ $seconds -ge 2 ]; then
|
||||
duration+=" $seconds seconds"
|
||||
duration+=" $seconds seconds"
|
||||
elif [ $seconds -eq 1 ]; then
|
||||
duration+=" $seconds second"
|
||||
duration+=" $seconds second"
|
||||
fi
|
||||
durationmsg="Update complete...elapsed time $duration..."
|
||||
durationmsg="${durationmsg// / }"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue