~mhysterio/sintel-media/trunk

84 by mhyst
Correción: algunos módulos no funcionaban sin el shebang. Así que lo hemos vuelto a añadir
1
#!/bin/bash
48 by mhyst
Versión 2.3.2
2
# This file is part of Sintel.
3
#
4
# Sintel is free software: you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation, either version 3 of the License, or
7
# (at your option) any later version.
8
#
9
# Sintel is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with Sintel.  If not, see <https://www.gnu.org/licenses/>.
16
#
17
#
1 by mhyst
Primer commit
18
#Modularity: introduce la posibilidad de cargar modulos en bash
19
#
20
#Para mejor utilización del espacio de nombres, cada módulo debería utilizar un prefijo propio para
21
#variables y funciones. Para funciones se recomienda delimitar con el punto, pero este no es posible usarlo
22
#en variables, por lo que en variables se recomienda utilizar "_"
23
24
#Directorio donde se encuentran almacenados los módulos
25 by mhyst
Añadido módulo similar a anime para hacer seguimiento de series que veo online
25
modularity_DIR="$global_DIR"
1 by mhyst
Primer commit
26
27
#Esta variable debe especificarse en el script principal antes de cargar modularity mediante source
28
#MODS=( "help" "init" "database" "peliculas" "series" )
29
33 by mhyst
Documentando funciones (III) 19/07/2019
30
function modularity.info() {
31
    echo "modularity - Carga los módulos"
32
    echo
33
    echo "Una de las características de sintel es que siempre es"
34
    echo "un trabajo en progreso. Por esta razón tuve que pensar"
35
    echo "en una manera sencilla y rápida de añadir funciones y"
36
    echo "código que se pudieran utilizar inmediatamente con el"
37
    echo "mínimo número de modificaciones al programa principal."
38
    echo
39
    echo "Eso dió lugar a una primera versión de modularity, que"
40
    echo "con alguna mejora pasó a ser el módulo responsable de"
41
    echo "cargar el resto de módulos de sintel."
42
    echo
43
    echo "Su funcionamiento es muy sencillo. En primer lugar se"
44
    echo "define una lista llamada MODS que va a contener los"
45
    echo "nombres de los ficheros que contienen el código en sí."
46
    echo "Entonces se importa mediante la palabra clave 'source'"
47
    echo "modularity, que se encarga de leer la lista y de cargar"
48
    echo "los módulos en el orden en que están escritos en MODS."
49
    echo
50
    echo "Este sencillo mecanismo permite escribir nuevos archivos"
51
    echo "o módulos con funcionalidades nuevas, cuyas funciones"
52
    echo "pueden empezar a utilizarse simplemente añadiendo el"
53
    echo "nombre del archivo nuevo a la lista MODS."
54
    echo
55
    echo "Lo mejor de todo es que los nuevos módulos pueden llamar"
56
    echo "a cualquier función de los módulos previamente existentes"
57
    echo ", con lo que se pueden crear varias capas de lógica o"
58
    echo "niveles, que pueden dar lugar a un programa grande, pero"
59
    echo "sin las complicaciones de tener que mantener un script de"
60
    echo "bash grande."
61
}
62
1 by mhyst
Primer commit
63
#Bucle que recorre el array de módulos y probará a cargar uno tras otro
64
for mod in "${MODS[@]}"; do
65
	#Si hemos activado la depuración, se mostrarán mensajes indicativos
66
	#$DEBUG && echo -n "Iniciando $mod..." > /dev/tty
67
	#Carga del módulo
68
	source "$modularity_DIR/$mod"
69
	#Si la carga resultó en error, debe indicarse
70
	if [[ $? == 0 ]]; then
71
		#$DEBUG && echo "Hecho!" > /dev/tty
72
		:
73
	else
74
		echo "Módulo $mod no se pudo cargar." > /dev/tty
75
	fi
33 by mhyst
Documentando funciones (III) 19/07/2019
76
done