#!/bin/bash
#
# Script:	opengnsys_compress.sh
# Descripción:	Programa para descargar y generar un fichero comprimido con los
#		datos de la última revisión de código del Proyecto OpenGnsys.
# Salida:	Datos del fichero comprimido generado.
# Versión:	1.0 - Incluido en OpenGnSys 1.0.1
# Autor:	Ramón Gómez, Universidad de Sevilla
# Fecha:	10/05/2011
# Versión:	1.1.1 - Descarga desde repositorio de GitHub
# Autor:	Ramón Gómez, Universidad de Sevilla
# Fecha:	27/05/2018


# Comprobaciones.
for PROG in jq unzip; do
    if ! which $PROG &>/dev/null; then
        echo "Please, install \"$PROG\" package."
        exit 1
    fi
done

# Variables.
BRANCH="main"
CODE_URL="https://codeload.github.com/opengnsys/OpenGnsys/zip/$BRANCH"
API_URL="https://api.github.com/repos/opengnsys/OpenGnsys/branches/$BRANCH"
REVISION=$(curl -s "$API_URL" | jq '"r" + (.commit.commit.committer.date | split("-") | join("")[:8]) + "." + (.commit.sha[:7])')

# Descargar del repositorio de código.
cd /tmp
rm -fr opengnsys
curl "$CODE_URL" -o opengnsys.zip && unzip opengnsys.zip && mv "OpenGnsys-$BRANCH" opengnsys

# Asisgnar propietario de los ficheros descargados.
chown -R root.root opengnsys
WARNING=$?

# Parchear datos de revisión del código.
jq ".release=$REVISION" opengnsys/doc/VERSION.json | sponge opengnsys/doc/VERSION.json

# Generar fichero comprimido.
VERSION=$(jq -r '.version+"-"+.release' opengnsys/doc/VERSION.json)
tar cvzf opengnsys-$VERSION.tar.gz opengnsys
rm -fr opengnsys opengnsys.zip

# Revisar salida.
[ $WARNING != 0 ] && echo "*** WARNING: cannot change owner of files to \"root\" user before compressing."
ls -lh $(readlink -e opengnsys-$VERSION.tar.gz)

