Durante algún tiempo he hecho la ñapa de definir una variable "version" para solo tener que cambiar este valor y estar cambiando todos los sitios donde sale para así evitar errores por "espaguetización", así por ejemplo sería el script para descargar un AppImage:
#/bin/bashPero seguimos con la necesidad de estar pendiente de los cambios de versión, algo que es poco sostenible, así que investigué un poco como sabe github y, si está bien definido la dirección URL donde podemos consultar el número sería algo como ésto:
toolname="amspirit"
version="1.10.7"
url="https://github.com/AMSpiriT-Emulator/amspirit-releases/releases/download/v${version}-beta/freetube-${version}-beta-${arch}.AppImage"
source $pwddir/../commonscripts/makeopenchangetodir.sh /opt/appimages
wget -N ${url} -O ${toolname}.AppImage
chmod +x ${toolname}.AppImage
source $pwddir/../commonscripts/makeopenchangetodir.sh /opt/appimages/${toolname}.AppImage.home
cd $pwddir
$pwddir/../commonscripts/createshortcuts.sh ${toolname}
https://api.github.com/repos/usuario/programa/releases/latest
La consulta nos devolverá un json con muchos valores, a nosotros nos interesa el que tiene la etiqueta 'tag_name', que tendría un valor como:
tag_name: "1.10.7" |
Así que lo primero que hice fue un nuevo script para uso común que haga esta tarea, pasándole como parámetros el usuario y repositorio del programa:
script: ./commonscripts/githubversion.sh
#/bin/bash
# $1: user
# $2: repo
pwddir=$(pwd)
$pwddir/../commonscripts/instalator.sh jq &> /dev/null
latestversionurl="https://api.github.com/repos/${1}/${2}/releases/latest"
versionpack=$(wget "${latestversionurl}" -q -O -)
tag=$(echo "${versionpack}" | jq -r '.tag_name')
echo ${tag#v}
Con este script obtengo el número, puede que tenga algún sufijo o prefijo que sobra, por ejemplo supongamos que nos devuelve "Lite-1.10.7" en ese caso con el comando sed sustituimos esa cadena por la cadena vacía, así quedaría el script de instalación:
#/bin/bash
pwddir=$(pwd)
toolname="amspirit"
user="AMSpiriT-Emulator"
repo="amspirit-releases"
version=$(${pwddir}/../commonscripts/githubversion.sh ${user} ${repo} | sed 's/Lite-//')
arch=`uname -m`
url="https://github.com/${user}/${repo}/releases/download/Lite-${version}/amspirit-lite-qt-${version}-linux-${arch}.AppImage"
source $pwddir/../commonscripts/makeopenchangetodir.sh /opt/appimages
wget -N ${url} -O ${toolname}.AppImage
chmod +x ${toolname}.AppImage
source $pwddir/../commonscripts/makeopenchangetodir.sh /opt/appimages/${toolname}.AppImage.home
cd $pwddir
$pwddir/../commonscripts/createshortcuts.sh ${toolname}
En caso de devolver solo "1.10.7" el trozo siguiente sobraría:
| sed 's/Lite-//')
Y ya está, ahora cada vez que seleccionemos instalar uno de estos programas siempre nos descargará la última versión publicada.
