diff --git a/tools/arkmanager b/tools/arkmanager index 0cef9ad..f471b6f 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -1975,8 +1975,13 @@ doExtractMod(){ local modid=$1 local modsrcdir="$steamcmdroot/steamapps/workshop/content/$mod_appid/$modid" local moddestdir="$arkserverroot/ShooterGame/Content/Mods/$modid" + local modextractdir="$moddestdir" local modbranch="${mod_branch:-Windows}" + if [[ -n "$arkStagingDir" && -d "$arkStagingDir" ]]; then + modextractdir="$arkStagingDir/Mods/$modid" + fi + # Bypass the 111111111 modid used by Primitive+ if [ "$modid" = "111111111" ]; then return 0 @@ -1992,45 +1997,45 @@ doExtractMod(){ fi done - if [ -f "$moddestdir/.modbranch" ]; then - mv "$moddestdir/.modbranch" "$moddestdir/__arkmanager_modbranch__.info" + if [ -f "$modextractdir/.modbranch" ]; then + mv "$modextractdir/.modbranch" "$modextractdir/__arkmanager_modbranch__.info" fi - if [ \( ! -f "$moddestdir/__arkmanager_modbranch__.info" \) ] || [ "$(<"$moddestdir/__arkmanager_modbranch__.info")" != "$modbranch" ]; then - rm -rf "$moddestdir" + if [ \( ! -f "$modextractdir/__arkmanager_modbranch__.info" \) ] || [ "$(<"$modextractdir/__arkmanager_modbranch__.info")" != "$modbranch" ]; then + rm -rf "$modextractdir" fi if [ -f "$modsrcdir/mod.info" ]; then - echo "Copying files to $moddestdir" + echo "Copying files to $modextractdir" if [ -f "$modsrcdir/${modbranch}NoEditor/mod.info" ]; then modsrcdir="$modsrcdir/${modbranch}NoEditor" fi - find "$modsrcdir" -type d -printf "$moddestdir/%P\0" | xargs -0 -r mkdir -p + find "$modsrcdir" -type d -printf "$modextractdir/%P\0" | xargs -0 -r mkdir -p - find "$moddestdir" -type f ! -name '.*' -printf "%P\n" | while read f; do + find "$modextractdir" -type f ! -name '.*' -printf "%P\n" | while read f; do if [ \( ! -f "$modsrcdir/$f" \) -a \( ! -f "$modsrcdir/${f}.z" \) ]; then - rm "$moddestdir/$f" + rm "$modextractdir/$f" fi done - find "$moddestdir" -depth -type d -printf "%P\n" | while read d; do + find "$modextractdir" -depth -type d -printf "%P\n" | while read d; do if [ ! -d "$modsrcdir/$d" ]; then - rmdir "$moddestdir/$d" + rmdir "$modextractdir/$d" fi done find "$modsrcdir" -type f ! \( -name '*.z' -or -name '*.z.uncompressed_size' \) -printf "%P\n" | while read f; do - if [ \( ! -f "$moddestdir/$f" \) -o "$modsrcdir/$f" -nt "$moddestdir/$f" ]; then + if [ \( ! -f "$modextractdir/$f" \) -o "$modsrcdir/$f" -nt "$modextractdir/$f" ]; then printf "%10d %s " "`stat -c '%s' "$modsrcdir/$f"`" "$f" - cp "$modsrcdir/$f" "$moddestdir/$f" + cp "$modsrcdir/$f" "$modextractdir/$f" echo -ne "\r\\033[K" fi done find "$modsrcdir" -type f -name '*.z' -printf "%P\n" | while read f; do - if [ \( ! -f "$moddestdir/${f%.z}" \) -o "$modsrcdir/$f" -nt "$moddestdir/${f%.z}" ]; then + if [ \( ! -f "$modextractdir/${f%.z}" \) -o "$modsrcdir/$f" -nt "$modextractdir/${f%.z}" ]; then printf "%10d %s " "`stat -c '%s' "$modsrcdir/$f"`" "${f%.z}" perl -M'Compress::Raw::Zlib' -e ' my $sig; @@ -2065,16 +2070,16 @@ doExtractMod(){ } print $output; } - ' <"$modsrcdir/$f" >"$moddestdir/${f%.z}" - touch -c -r "$modsrcdir/$f" "$moddestdir/${f%.z}" + ' <"$modsrcdir/$f" >"$modextractdir/${f%.z}" + touch -c -r "$modsrcdir/$f" "$modextractdir/${f%.z}" echo -ne "\r\\033[K" fi done modname="$(curl -s "http://steamcommunity.com/sharedfiles/filedetails/?id=${modid}" | sed -n 's|^.*