#!/bin/bash logfile="duckstation_update.log" basefile="duckstation_libretro_linux_" baseurl="https://www.duckstation.org/libretro/" corefile="duckstation_libretro.so" echo "$(date +%Y-%m-%d\ %H:%M:%S) Started check for new version..." >> ${logfile} for arch in aarch64 arm x86_64 do echo "Checking ${arch}..." >> ${logfile} hashfile="duckstation-hash-${arch}.txt" [ -f ${hashfile} ] && previous="$(cat ${hashfile})" || previous="" [ -n "${previous}" ] && echo "Previous version '${previous}'." >> ${logfile} case ${arch} in aarch64) zipfile=${basefile}${arch}.zip url=${baseurl}${zipfile} ;; arm) zipfile=${basefile}${arch}v7.zip url=${baseurl}${zipfile} ;; x86_64) zipfile=${basefile}x64.zip url=${baseurl}${zipfile} ;; esac echo "Downloading '${url}' to '${zipfile}'..." >> ${logfile} wget --output-file=- -q -O ${zipfile} ${url} 2>&1 >> ${logfile} echo "Extracting '${zipfile}'..." >> ${logfile} unzip -q ${zipfile} 2>&1 >> ${logfile} echo "Removing '${zipfile}'..." >> ${logfile} rm ${zipfile} 2>&1 >> ${logfile} echo "Getting commit hash from '${corefile}'..." >> ${logfile} latest=$(strings ${corefile} | grep ^libretro -A 1 -m 1 | tail -n 1) echo "Found commit hash '${latest}'." >> ${logfile} if [ -z "${latest}" ] then echo "Commit hash is empty - aborting!" >> ${logfile} echo "Removing '${corefile}'..." >> ${logfile} rm ${corefile} 2>&1 >> ${logfile} echo "Done with ${arch}." >> ${logfile} continue fi if [ "${previous}" = "${latest}" ] then echo "Version '${latest}' already downloaded." >> ${logfile} echo "Removing '${corefile}'..." >> ${logfile} rm ${corefile} 2>&1 >> ${logfile} echo "Done with ${arch}." >> ${logfile} continue fi echo "Found new version '${latest}'." >> ${logfile} foldername="duckstation_${arch}-${latest}" archivename="${foldername}.zip" echo "Creating folder '${foldername}'..." >> ${logfile} mkdir -p ${foldername} 2>&1 >> ${logfile} echo "Moving '${corefile}' to '${foldername}/'" >> ${logfile} mv ${corefile} ${foldername}/ 2>&1 >> ${logfile} echo "Creating archive '${archivename}'..." >> ${logfile} zip -q -r ${archivename} ${foldername} 2>&1 >> ${logfile} echo "Removing folder '${foldername}'..." >> ${logfile} rm -r ${foldername} 2>&1 >> ${logfile} echo "Updating hashfile." >> ${logfile} echo -n ${latest} > ${hashfile} echo "Done with ${arch}." >> ${logfile} done echo "$(date +%Y-%m-%d\ %H:%M:%S) Finished." >> ${logfile} echo "---------------------------------------" >> ${logfile}