Skip to content

Instantly share code, notes, and snippets.

@Trystan4861
Created April 12, 2024 09:10
Show Gist options
  • Save Trystan4861/497d7a4ed14b3282993a5bce15868254 to your computer and use it in GitHub Desktop.
Save Trystan4861/497d7a4ed14b3282993a5bce15868254 to your computer and use it in GitHub Desktop.
Update package.json revision on git commit
#!/bin/bash
# set exit on error
set -e
# Comprobación de jq
if ! command -v jq &> /dev/null
then
echo "Error: jq no está instalado. Por favor, instálalo antes de ejecutar este script usando 'sudo apt-get install jq'"
exit 1
fi
# Pre-commit hook para actualizar el número de revisión en package.json
update_revision(){
# Verifica si la variable DONT_BUMP_REVISION está definida en el archivo .env
if [[ "$DONT_BUMP_REVISION" -ne "1" ]]
then
echo " Actualizando revisión.. "
else
echo "La versión no se actualizará porque se ha establecido la variable DONT_BUMP_REVISION."
exit 0
fi
# Obtiene la revision actual del package.json
old_revision=$(cat package.json | jq -r '.revision // empty')
# Obtiene la fecha actual en formato YYYYMMDD
fecha=$(date +"%Y%m%d")
# Obtiene la hora actual en formato HHMM
hora=$(date +"%H%M")
# Combina la fecha y la hora con un punto para formar la nueva revision en formato YYYYMMDD.HHMM
new_revision="rev.${fecha}.${hora}"
# Si no existe la línea "revision" en el nodo raíz, la añade después de la línea "version"
if [[ -z "$old_revision" ]]; then
jq '. + { "revision": "" }' package.json | jq --arg new_revision "$new_revision" '.revision = $new_revision' > tmpfile && mv tmpfile package.json
else
# Actualiza la nueva versión en el package.json
jq --arg new_revision "$new_revision" '.revision = $new_revision' package.json > tmpfile && mv tmpfile package.json
fi
# Añade el cambio en package.json al área de preparación de git
git add package.json
}
# Llama a la función para actualizar la revisión en package.json
update_revision
# El hook actualiza la revisión y si no existe la añade al nodo raíz de package.json, de modo que si quieres tenerlo visible al principio del mismo es conveniente agregarla al package.json, por ejemplo detrás de "version":
# "version": "x.y.z",
# "revision": "YYYYMMDD.HHMM",
# el hook usa jq para cambar sólo la "revision" del nodo raíz, si no lo tienes instalado de mostrará un error con la instrucción para instalarlo:
# sudo apt-get install jq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment