Created
April 12, 2024 09:10
-
-
Save Trystan4861/497d7a4ed14b3282993a5bce15868254 to your computer and use it in GitHub Desktop.
Update package.json revision on git commit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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