Browse Source

update refactor

pull/3156/head
Daniel Gibbs 5 years ago
parent
commit
02c2e108ad
  1. 7
      lgsm/config-default/config-lgsm/vintsserver/_default.cfg
  2. 129
      lgsm/functions/update_vintagestory.sh

7
lgsm/config-default/config-lgsm/vintsserver/_default.cfg

@ -13,6 +13,10 @@ fn_parms(){
parms="--datapath ${vsdataworld}"
}
## Release Settings | https://docs.linuxgsm.com/game-servers/vintagestory#release-settings
# Branch (stable|unstable)
branch="stable"
#### LinuxGSM Settings ####
## LinuxGSM Stats
@ -144,7 +148,8 @@ vsdatapath="${serverfiles}/data"
vsdataworld="${vsdatapath}/${selfname}"
systemdir="${serverfiles}"
executabledir="${systemdir}"
executable="mono ./VintagestoryServer.exe"
preexecutable="mono"
executable="./VintagestoryServer.exe"
servercfgdir="${vsdataworld}"
servercfg="serverconfig.json"
servercfgdefault="serverconfig.json"

129
lgsm/functions/update_vintagestory.sh

@ -6,26 +6,9 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
remotelocation="vintagestory.at"
apiurl="http://api.${remotelocation}/stable-unstable.json"
local_version_file="${datadir}/vintagestory_version"
fn_update_vs_remotebuild(){
if [ "${branch}" == "unstable" ]; then
remotebuild=$(curl -s "${apiurl}" | jq -r '[ to_entries[] ] | .[].key' | grep -E "\-rc|\-pre" | sort -r -V | head -1)
else
remotebuild=$(curl -s "${apiurl}" | jq -r '[ to_entries[] ] | .[].key' | grep -Ev "\-rc|\-pre" | sort -r -V | head -1)
fi
}
fn_update_vs_get_installed_version(){
localbuild=$(cat "${local_version_file}" )
# Alternative: get version from executeable $(mono .exe --version)
}
fn_update_vs_dl(){
# get version info for download
vsapiresponse=$(curl -s "${apiurl}" | jq --arg version "${remotebuild}" '.[$version].server')
remotebuildresponse=$(curl -s "${apiurl}" | jq --arg version "${remotebuild}" '.[$version].server')
remotebuildfile=$(echo -e "${vsapiresponse}" | jq -r '.filename')
remotebuildlink=$(echo -e "${vsapiresponse}" | jq -r '.urls.cdn')
remotebuildmd5=$(echo -e "${vsapiresponse}" | jq -r '.md5')
@ -34,57 +17,81 @@ fn_update_vs_dl(){
fn_fetch_file "${remotebuildlink}" "" "" "" "${tmpdir}" "${remotebuildfile}" "nochmodx" "norun" "force" "${remotebuildmd5}"
fn_dl_extract "${tmpdir}" "${remotebuildfile}" "${serverfiles}"
fn_clear_tmp
echo "${remotebuild}" > "${local_version_file}"
}
if [ -z "${branch}" ]; then
branch="stable"
fn_update_vs_localbuild(){
# Gets local build info.
fn_print_dots "Checking local build: ${remotelocation}"
# Uses executable to find local build.
cd "${executabledir}" || exit
if [ -f "${executable}" ]; then
localbuild=$(${preexecutable} ${executable} --version 2>&1 >/dev/null)
fn_print_ok "Checking local build: ${remotelocation}"
fn_script_log_pass "Checking local build"
else
localbuild="0"
fn_print_error "Checking local build: ${remotelocation}"
fn_script_log_error "Checking local build"
fi
}
fn_update_vs_remotebuild(){
if [ "${branch}" == "stable" ]; then
remotebuild=$(curl -s "${apiurl}" | jq -r '[ to_entries[] ] | .[].key' | grep -Ev "\-rc|\-pre" | sort -r -V | head -1)
else
remotebuild=$(curl -s "${apiurl}" | jq -r '[ to_entries[] ] | .[].key' | grep -E "\-rc|\-pre" | sort -r -V | head -1)
fi
if [ "${commandname}" == "INSTALL" ]; then
fn_update_vs_remotebuild
if [ -z "${remotebuild}" ]; then
# cannot get version
fn_print_fail_eol_nl
fn_script_log_fatal "Cannot get version from remote"
if [ "${firstcommandname}" != "INSTALL" ]; then
fn_print_dots "Checking remote build: ${remotelocation}"
# Checks if remotebuild variable has been set.
if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then
fn_print_fail "Checking remote build: ${remotelocation}"
fn_script_log_fatal "Checking remote build"
core_exit.sh
else
# get version proceed
fn_update_vs_dl
fn_print_ok "Checking remote build: ${remotelocation}"
fn_script_log_pass "Checking remote build"
fi
elif [ "${commandname}" == "UPDATE" ]||[ "${commandname}" == "CHECK-UPDATE" ]; then
if [ ! -f "${local_version_file}" ]; then
# server not installed
fn_print_fail_eol_nl
fn_script_log_fatal "Vintage story server not installed"
core_exit.sh
else
fn_update_vs_remotebuild
if [ -z "${remotebuild}" ]; then
fn_print_fail_eol_nl
fn_script_log_fatal "Cannot get version from remote"
# Checks if remotebuild variable has been set.
if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then
fn_print_failure "Unable to get remote build"
fn_script_log_fatal "Unable to get remote build"
core_exit.sh
fi
fn_update_vs_get_installed_version
if [ "${remotebuild}" != "${localbuild}" ]; then
fi
}
fn_update_vs_compare(){
# Removes dots so if statement can compare version numbers.
fn_print_dots "Checking for update: ${remotelocation}"
if [ "${localbuild}" != "${remotebuild}" ]||[ "${forceupdate}" == "1" ]; then
fn_print_ok_nl "Checking for update: ${remotelocation}"
echo -en "\n"
echo -e "Update available"
echo -e "* Local build: ${red}${localbuild}${default}"
echo -e "* Remote build: ${green}${remotebuild}${default}"
echo -e "* Branch: ${branch}"
echo -en "\n"
if [ -n "${branch}" ]; then
echo -e "* Branch: ${branch}"
fi
fn_script_log_info "Update available"
fn_script_log_info "Local build: ${localbuild}"
fn_script_log_info "Remote build: ${remotebuild}"
fn_script_log_info "${localbuild} > ${remotebuild}"
# update server
if [ "${commandname}" == "UPDATE" ]; then
unset updateonstart
check_status.sh
# If server stopped.
if [ "${status}" == "0" ]; then
exitbypass=1
fn_update_vs_dl
exitbypass=1
command_start.sh
exitbypass=1
command_stop.sh
fn_firstcommand_reset
# If server started.
else
fn_print_restart_warning
@ -96,31 +103,43 @@ elif [ "${commandname}" == "UPDATE" ]||[ "${commandname}" == "CHECK-UPDATE" ]; t
exitbypass=1
command_start.sh
fn_firstcommand_reset
unset exitbypass
fi
unset exitbypass
date +%s > "${lockdir}/lastupdate.lock"
alert="update"
elif [ "${commandname}" == "CHECK-UPDATE" ]; then
alert="check-update"
fi
# trigger alert
alert.sh
elif [ "${remotebuild}" == "${localbuild}" ]; then
else
fn_print_ok_nl "Checking for update: ${remotelocation}"
echo -en "\n"
echo -e "No update available"
echo -e "* Local build: ${green}${localbuild}${default}"
echo -e "* Remote build: ${green}${remotebuild}${default}"
if [ -n "${branch}" ]; then
echo -e "* Branch: ${branch}"
fi
echo -en "\n"
fn_script_log_info "No update available"
fn_script_log_info "Local build: ${localbuild}"
fn_script_log_info "Remote build: ${remotebuild}"
fn_script_log_pass "Latest version ${remotebuild} already installed"
else
fn_print_fail_eol_nl
fn_script_log_fatal "Something went wrong"
core_exit.sh
if [ -n "${branch}" ]; then
fn_script_log_info "Branch: ${branch}"
fi
fi
}
# The location where the builds are checked and downloaded.
remotelocation="vintagestory.at"
apiurl="http://api.${remotelocation}/stable-unstable.json"
localversionfile="${datadir}/vintagestoryversion"
if [ "${firstcommandname}" == "INSTALL" ]; then
fn_update_vs_remotebuild
fn_update_vs_dl
else
fn_print_dots "Checking for update"
fn_print_dots "Checking for update: ${remotelocation}"
fn_script_log_info "Checking for update: ${remotelocation}"
fn_update_vs_localbuild
fn_update_vs_remotebuild
fn_update_vs_compare
fi

Loading…
Cancel
Save