#!/bin/bash
#/**
#@file    registeredsoftware
#@brief   Lista el software instalado en una imagen de sistema.
#@usage   registeredsoftware Image
#@param   Image     Nombre canónico de la imagen.
#@return  Líneas con el formato:   programa versión
#@version 1.0 - Creación del script.
#@author  Ramón Gómez - Univ. Sevilla
#@date    2014-02-27
#@version 1.1.0 - Incluir sistema operativo.
#@author  Ramón Gómez - Univ. Sevilla
#@date    2016-06-08
#**/


# Variables.
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg

source $OPENGNSYS/lib/ogfunctions.sh || exit 1

# Mostrar ayuda o número de versión.
[ "$*" == "help" ] && help
[ "$*" == "version" ] && version

# Control básico de errores.
[ $# -eq 1 ] || raiseError usage
[ "$USER" != "root" ] && raiseError access "Need to be root"
source $SERVERCONF 2>/dev/null || raiseError access "Sin acceso a fichero de configuración"

# Sustituir caracteres ' por \' para evitar inyección SQL.
RESOURCE="${1//\'/\\\'}"

# Obtener lista de componentes del perfil de software asociado a la imagen.
dbexec "SELECT descr
	  FROM ((SELECT 1 AS orden, nombresos.nombreso AS descr
		   FROM perfilessoft
		   JOIN imagenes USING(idperfilsoft)
		   JOIN nombresos USING(idnombreso)
		  WHERE imagenes.nombreca='$RESOURCE')
		UNION
                (SELECT 2, softwares.descripcion
		   FROM perfilessoft
		   JOIN perfilessoft_softwares USING(idperfilsoft)
		   JOIN softwares USING(idsoftware)
		   JOIN imagenes USING(idperfilsoft)
		  WHERE imagenes.nombreca='$RESOURCE')) AS unidas
	 ORDER BY orden ASC, descr ASC;"

