Merge pull request #381 from klightspeed/1.5-dev#steamcmdstatus

Improve mod update behaviour
This commit is contained in:
Fez Vrasta 2016-02-03 12:33:52 +01:00
commit 565189eefc

View File

@ -354,6 +354,28 @@ function runSteamCMD(){
"$steamcmdroot/$steamcmdexec" +@NoPromptForPassword 1 +login ${steamlogin:-anonymous} "$@" +quit "$steamcmdroot/$steamcmdexec" +@NoPromptForPassword 1 +login ${steamlogin:-anonymous} "$@" +quit
} }
function runSteamCMDspinner(){
if [ -n "$verbose" ]; then
echo
runSteamCMD "$@"
return $?
else
runSteamCMD "$@" >/dev/null 2>&1 &
local scpid=$!
local pos=0
local spinner=( '-' '/' '|' '\' )
echo -n ' ... '
while kill -0 $scpid 2>/dev/null; do
printf "\b%c" "${spinner[$pos]}"
(( pos = (pos + 1) % 4 ))
sleep 0.5
done
echo -ne '\b \b'
wait $scpid
return $?
fi
}
# #
# Check if a new version is available but not apply it # Check if a new version is available but not apply it
# #
@ -768,7 +790,7 @@ doStopAll(){
# install / update / download update # install / update / download update
# #
runSteamCMDAppUpdate(){ runSteamCMDAppUpdate(){
runSteamCMD +force_install_dir "$1" +app_update $appid $2 runSteamCMDspinner +force_install_dir "$1" +app_update $appid $2
} }
# #
@ -945,13 +967,13 @@ doUpdate() {
fi fi
done done
echo "$$" >"${arkserverroot}/.ark-update.lock.$$" echo "$$" >"${arkserverroot}/.ark-update.lock.$$" 2>/dev/null
while true; do while true; do
if ! ln "${arkserverroot}/.ark-update.lock.$$" "${arkserverroot}/.ark-update.lock"; then if ! ln "${arkserverroot}/.ark-update.lock.$$" "${arkserverroot}/.ark-update.lock" 2>/dev/null; then
local lockpid="$(<"${arkserverroot}/.ark-update.lock")" local lockpid="$(<"${arkserverroot}/.ark-update.lock")"
if [ -n "$lockpid" ] && [ "$lockpid" != "$$" ] && kill -0 "$lockpid"; then if [ -n "$lockpid" ] && [ "$lockpid" != "$$" ] && kill -0 "$lockpid" 2>/dev/null; then
echo "Update already in progress (PID: $lockpid)" echo "Update already in progress (PID: $lockpid)"
rm -f "${arkserverroot}/.ark-update.lock.$$" rm -f "${arkserverroot}/.ark-update.lock.$$" 2>/dev/null
return 1 return 1
fi fi
rm -f "${arkserverroot}/.ark-update.lock" rm -f "${arkserverroot}/.ark-update.lock"
@ -993,7 +1015,7 @@ doUpdate() {
rm -rf "$arkStagingDir/ShooterGame/Saved/"* rm -rf "$arkStagingDir/ShooterGame/Saved/"*
fi fi
echo "Downloading ARK update" echo -n "Downloading ARK update"
cd "$steamcmdroot" cd "$steamcmdroot"
runSteamCMDAppUpdate "$arkStagingDir" $validate runSteamCMDAppUpdate "$arkStagingDir" $validate
if [ -d "${arkStagingDir}/steamapps/downloading/${appid}" ]; then if [ -d "${arkStagingDir}/steamapps/downloading/${appid}" ]; then
@ -1077,7 +1099,7 @@ doUpdate() {
fi fi
done done
else else
echo "Performing ARK update" echo -n "Performing ARK update"
cd "$steamcmdroot" cd "$steamcmdroot"
runSteamCMDAppUpdate "$arkserverroot" $validate runSteamCMDAppUpdate "$arkserverroot" $validate
fi fi
@ -1129,17 +1151,26 @@ doDownloadMod(){
local moddldir="$steamcmdroot/steamapps/workshop/downloads/$mod_appid/$modid" local moddldir="$steamcmdroot/steamapps/workshop/downloads/$mod_appid/$modid"
local dlsize=0 local dlsize=0
cd "$steamcmdroot" cd "$steamcmdroot"
rm "$steamcmdroot/workshop/appworkshop_${mod_appid}.acf" 2>/dev/null
while true; do while true; do
echo "Downloading mod $modid" echo -n "Downloading mod $modid"
runSteamCMD +workshop_download_item $mod_appid $modid runSteamCMDspinner +workshop_download_item $mod_appid $modid
echo result=$?
echo "Checking mod $modid" if [ $result -eq 0 ]; then
if [ ! -d "$moddldir" ]; then break; fi break
local newsize="`du -s "$moddldir/.." | cut -f1`" else
if [ $newsize -eq $dlsize ]; then break; fi echo
dlsize=$newsize echo "Checking mod $modid"
echo "Mod $modid not fully downloaded - retrying" if [ ! -d "$moddldir" ]; then break; fi
local newsize="`du -s "$moddldir/.." | cut -f1`"
if [ $newsize -eq $dlsize ]; then
echo "Mod $modid update not progressing - aborting"
return 1
fi
dlsize=$newsize
echo "Mod $modid not fully downloaded - retrying"
fi
done done
if [ -f "$modsrcdir/mod.info" ]; then if [ -f "$modsrcdir/mod.info" ]; then
@ -1654,6 +1685,9 @@ while true; do
--args) --args)
nrarg=$# nrarg=$#
;; ;;
--verbose)
verbose=1
;;
--*) --*)
options+=( "$1" ) options+=( "$1" )
;; ;;