~mhysterio/sintel-media/trunk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
# This file is part of Sintel.
#
# Sintel is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Sintel is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Sintel.  If not, see <https://www.gnu.org/licenses/>.
#
#
#Modularity: introduce la posibilidad de cargar modulos en bash
#
#Para mejor utilización del espacio de nombres, cada módulo debería utilizar un prefijo propio para
#variables y funciones. Para funciones se recomienda delimitar con el punto, pero este no es posible usarlo
#en variables, por lo que en variables se recomienda utilizar "_"

#Directorio donde se encuentran almacenados los módulos
modularity_DIR="$global_DIR"

#Esta variable debe especificarse en el script principal antes de cargar modularity mediante source
#MODS=( "help" "init" "database" "peliculas" "series" )

function modularity.info() {
    echo "modularity - Carga los módulos"
    echo
    echo "Una de las características de sintel es que siempre es"
    echo "un trabajo en progreso. Por esta razón tuve que pensar"
    echo "en una manera sencilla y rápida de añadir funciones y"
    echo "código que se pudieran utilizar inmediatamente con el"
    echo "mínimo número de modificaciones al programa principal."
    echo
    echo "Eso dió lugar a una primera versión de modularity, que"
    echo "con alguna mejora pasó a ser el módulo responsable de"
    echo "cargar el resto de módulos de sintel."
    echo
    echo "Su funcionamiento es muy sencillo. En primer lugar se"
    echo "define una lista llamada MODS que va a contener los"
    echo "nombres de los ficheros que contienen el código en sí."
    echo "Entonces se importa mediante la palabra clave 'source'"
    echo "modularity, que se encarga de leer la lista y de cargar"
    echo "los módulos en el orden en que están escritos en MODS."
    echo
    echo "Este sencillo mecanismo permite escribir nuevos archivos"
    echo "o módulos con funcionalidades nuevas, cuyas funciones"
    echo "pueden empezar a utilizarse simplemente añadiendo el"
    echo "nombre del archivo nuevo a la lista MODS."
    echo
    echo "Lo mejor de todo es que los nuevos módulos pueden llamar"
    echo "a cualquier función de los módulos previamente existentes"
    echo ", con lo que se pueden crear varias capas de lógica o"
    echo "niveles, que pueden dar lugar a un programa grande, pero"
    echo "sin las complicaciones de tener que mantener un script de"
    echo "bash grande."
}

#Bucle que recorre el array de módulos y probará a cargar uno tras otro
for mod in "${MODS[@]}"; do
	#Si hemos activado la depuración, se mostrarán mensajes indicativos
	#$DEBUG && echo -n "Iniciando $mod..." > /dev/tty
	#Carga del módulo
	source "$modularity_DIR/$mod"
	#Si la carga resultó en error, debe indicarse
	if [[ $? == 0 ]]; then
		#$DEBUG && echo "Hecho!" > /dev/tty
		:
	else
		echo "Módulo $mod no se pudo cargar." > /dev/tty
	fi
done