Attempt to determine steam workshop dir

This commit is contained in:
Ben Peddell 2017-12-17 02:20:27 +10:00
parent fcdbe681a5
commit 24e9e2954d

View File

@ -396,6 +396,25 @@ getQueryPort(){
echo "${ark_QueryPort:-27015}" echo "${ark_QueryPort:-27015}"
} }
#
# Determine SteamCMD data directory
#
getSteamWorkshopDir(){
for d in "$steamworkshopdir" \
"$HOME/.steam/SteamApps/workshop" \
"$HOME/.steam/steamapps/workshop" \
"$HOME/Steam/SteamApps/workshop" \
"$HOME/Steam/steamapps/workshop" \
"${steamdataroot:-$steamcmdroot}/steamapps/workshop"; do
if [[ -d "${d}" && -f "${d}/appworkshop_${mod_appid}.acf" ]]; then
echo "$d"
return
fi
done
# default
echo "$HOME/Steam/steamapps/workshop"
}
# #
# Execute RCON command # Execute RCON command
# #
@ -2001,8 +2020,7 @@ checkForModUpdate(){
local instmft= local instmft=
local availmft= local availmft=
local modname= local modname=
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
local cancheckmodavail=1 local cancheckmodavail=1
local modmissing= local modmissing=
local revstatcode= local revstatcode=
@ -2119,8 +2137,7 @@ listMods(){
# #
getLocalModManifest(){ getLocalModManifest(){
local modid="$1" local modid="$1"
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
if [ ! -f "${steamworkshopdir}/appworkshop_${mod_appid}.acf" ]; then return 0; fi if [ ! -f "${steamworkshopdir}/appworkshop_${mod_appid}.acf" ]; then return 0; fi
local instmft="$(sed -n '/^\t"WorkshopItemsInstalled"$/,/^\t[}]$/{/^\t\t"'"${modid}"'"$/,/^\t\t[}]$/{s|^\t\t\t"manifest"\t\t"\(.*\)"$|\1|p}}' <"${steamworkshopdir}/appworkshop_${mod_appid}.acf")" local instmft="$(sed -n '/^\t"WorkshopItemsInstalled"$/,/^\t[}]$/{/^\t\t"'"${modid}"'"$/,/^\t\t[}]$/{s|^\t\t\t"manifest"\t\t"\(.*\)"$|\1|p}}' <"${steamworkshopdir}/appworkshop_${mod_appid}.acf")"
echo "$instmft" echo "$instmft"
@ -2141,8 +2158,7 @@ isModUpdateAvailable(){
local modid="$1" local modid="$1"
local instmft="$(getLocalModManifest "$modid")" local instmft="$(getLocalModManifest "$modid")"
local remmft="$(getAvailModManifest "$modid")" local remmft="$(getAvailModManifest "$modid")"
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
if [ ! -f "${steamworkshopdir}/appworkshop_${mod_appid}.acf" ]; then return 0; fi if [ ! -f "${steamworkshopdir}/appworkshop_${mod_appid}.acf" ]; then return 0; fi
if [[ -n "${remmft}" && "${instmft}" != "${remmft}" ]]; then if [[ -n "${remmft}" && "${instmft}" != "${remmft}" ]]; then
return 0 # true return 0 # true
@ -2160,8 +2176,7 @@ doDownloadMod(){
steamcmdroot="$arkserverroot/Engine/Binaries/ThirdParty/SteamCMD/Linux" steamcmdroot="$arkserverroot/Engine/Binaries/ThirdParty/SteamCMD/Linux"
fi fi
doDownloadSteamCMD doDownloadSteamCMD
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
local modsrcdir="${steamworkshopdir}/content/$mod_appid/$modid" local modsrcdir="${steamworkshopdir}/content/$mod_appid/$modid"
local moddldir="${steamworkshopdir}/downloads/$mod_appid" local moddldir="${steamworkshopdir}/downloads/$mod_appid"
cd "$steamcmdroot" cd "$steamcmdroot"
@ -2234,8 +2249,7 @@ doDownloadAllMods(){
# #
isModUpdateNeeded(){ isModUpdateNeeded(){
local modid=$1 local modid=$1
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
local modsrcdir="${steamworkshopdir}/content/$mod_appid/$modid" local modsrcdir="${steamworkshopdir}/content/$mod_appid/$modid"
local moddestdir="$arkserverroot/${arkserverdir}/Content/Mods/$modid" local moddestdir="$arkserverroot/${arkserverdir}/Content/Mods/$modid"
local modbranch="${mod_branch:-Windows}" local modbranch="${mod_branch:-Windows}"
@ -2283,8 +2297,7 @@ isModUpdateNeeded(){
# #
getModName(){ getModName(){
local modid=$1 local modid=$1
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
local modsrcdir="${steamworkshopdir}/content/$mod_appid/$modid" local modsrcdir="${steamworkshopdir}/content/$mod_appid/$modid"
if [ -n "${modsrcdirs[$modid]}" ]; then if [ -n "${modsrcdirs[$modid]}" ]; then
@ -2330,8 +2343,7 @@ isAnyModUpdateNeeded(){
# #
doExtractMod(){ doExtractMod(){
local modid=$1 local modid=$1
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
local modsrcdir="${steamworkshopdir}/content/$mod_appid/$modid" local modsrcdir="${steamworkshopdir}/content/$mod_appid/$modid"
local moddestdir="$arkserverroot/${arkserverdir}/Content/Mods/$modid" local moddestdir="$arkserverroot/${arkserverdir}/Content/Mods/$modid"
local modextractdir="$moddestdir" local modextractdir="$moddestdir"
@ -2513,8 +2525,7 @@ doExtractMod(){
# #
doInstallMod(){ doInstallMod(){
local modid local modid
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
for modid in ${1//,/ }; do for modid in ${1//,/ }; do
if [[ " $* " =~ *" --validate " ]]; then if [[ " $* " =~ *" --validate " ]]; then
if [ -f "${steamworkshopdir}/appworkshop_${mod_appid}.acf" ]; then if [ -f "${steamworkshopdir}/appworkshop_${mod_appid}.acf" ]; then
@ -2602,8 +2613,7 @@ doDisableMod(){
# #
doRemoveMods(){ doRemoveMods(){
local modid local modid
local steamdataroot="${steamdataroot:-${steamcmdroot}}" local steamworkshopdir="$(getSteamWorkshopDir)"
local steamworkshopdir="${steamworkshopdir:-${steamdataroot}/steamapps/workshop}"
for modid in ${1//,/ }; do for modid in ${1//,/ }; do
if [ -f "${steamworkshopdir}/appworkshop_${mod_appid}.acf" ]; then if [ -f "${steamworkshopdir}/appworkshop_${mod_appid}.acf" ]; then
sed -i "/^\\t\\t\"${modid}\"/,/^\\t\\t}/d" "${steamworkshopdir}/appworkshop_${mod_appid}.acf" sed -i "/^\\t\\t\"${modid}\"/,/^\\t\\t}/d" "${steamworkshopdir}/appworkshop_${mod_appid}.acf"