-
Notifications
You must be signed in to change notification settings - Fork 6
/
generador_tutorial
executable file
·168 lines (157 loc) · 6.24 KB
/
generador_tutorial
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#!/bin/bash
#
#Requiere:
# - Git
# - Markdown
# - wkhtmltopdf <- Sólo para generar pdfs.
# Colores solo para que se distinga un poco mejor(creo yo) los procesos que
# realiza el script.
cyan='\e[0;36m'
light='\e[1;36m'
red="\e[0;31m\033[1m"
yellow="\e[0;33m"
white="\e[0;37m"
end='\e[0m'
STARTTIME=$(date +%s )
NUM_SESIONES=5
#Revisamos que las dependencias se cumplan satisfactoriamente
DEPENDENCIES="git markdown"
for dep in $DEPENDENCIES
do
which $dep > /dev/null;
if [ $? -ne 0 ]
then
echo -e "Dependencia incumplida ${dep}, favor de instalar";
echo -e "sudo apt-get install ${dep}";
fi
done;
#optenemos la ruta del repositorio
repo_path=$(git rev-parse --show-toplevel)
##########################################################################################
function index_ejemplos {
echo -ne "${light}Generando index de la ṕagina de ejemplos${end}: ";
ejemplos_path=`echo ${repo_path}/ejemplos/`;
if [ -c "$ejemplos_path/index.md" ]
then
rm $ejemplos_path/index.md
fi
echo '# Ejemplos disponibles' > "$ejemplos_path/index.md";
echo '' >> "$ejemplos_path/index.md";
for sesion in $(seq 1 $NUM_SESIONES)
do
echo " - [**Sesión 0${sesion}**](../sesion0${sesion}/index.html)" >> "$ejemplos_path/index.md";
for file in `find $repo_path/ejemplos/ -iregex ".*\0${sesion}.*\.html$" | sort `;
do
file=`echo ${file} | sed "s|${ejemplos_path}||i"`;
target=$(echo $file | sed -r 's|_|\\_|g');
echo " - [${target}](./$file)" >> $ejemplos_path/index.md;
done;
done;
echo -e "${yellow}/ejemplos/index.md${end}";
}
##########################################################################################
# Genera la versión todo en un documento
##########################################################################################
function versionTodo {
echo '# Vesión todo en linea' > "${repo_path}/todo/index.md"
for sesion in $(seq 1 $NUM_SESIONES)
do
cat "${repo_path}/sesion0${sesion}/index.md" >> "${repo_path}/todo/index.md"
echo '' >> "${repo_path}/todo/index.md"
done;
}
##########################################################################################
# Genera la versión todo en un documento
##########################################################################################
function versionPDF {
wkhtmltopdf -n -g "${repo_path}/todo/index.html" "${repo_path}/todo/manual_jquery_basico.pdf"
}
##########################################################################################
# Imprime Temario.
##########################################################################################
function imprimeTemario {
echo -e "# Manual de JQuery en español\n";
echo '<div id="chacoSamurai"><img src="img/samurai_javascript.png" alt="el chaco samurai javascript" /></div>';
echo '';
for i in $(seq 1 $NUM_SESIONES)
do
grep -ERhio "^<h[1-2]>(.*)</h[0-9]>" sesion0${i}/index.html | \
sed -r "s/^<h([1-3]+)>(.*)<\/h[1-3]>/\1\2/" | sed -r "s/(\.|:)$//" | \
sed -r "s/^(1)(.*)/\1[**\2**](.\/sesion0${i}\/index.html)/" | \
sed -r 's/^(2)(.*)/ - [\2]()/;s/^1/ - /';
done
grep -ERhio "^<h[1-2]>(.*)</h[0-9]>" recursos/index.html | \
sed -r "s/^<h([1-2]+)>(.*)<\/h[1-3]>/\1\2/" | sed -r "s/(\.|:)$//" | \
sed -r "s/^(1)(.*)/\1[**\2**](.\/recursos\/index.html)/" | \
sed -r 's|^2| - |;s|^1| - |;s|href="./|href="./recursos/|';
echo ' - [**Listado de ejemplos disponibles**](./ejemplos/index.html)';
echo ""
echo "> Es manual es un [repositorio Público](https://github.com/mundoSICA/tutorial_hispano_jQuery/): sientase libre de usar y distribuir";
}
#Si no recibe ningún argumento, actualiza todo el directorio
if [ $# -ne 1 ]
then
clear
echo -e "${light}Manual jQuery Generator - Ejecución modo actualización general${end}";
echo -ne "${red}\r";
splash=`ls "${repo_path}/plantilla/splashes/" | sort -R | head -1`
cat "${repo_path}/plantilla/splashes/$splash"
echo -e "${end}";
echo "--------------------------------------------------------------------------------";
#Generando documento pdf
#echo -e "${light}Generando documento PDF${end}";
#versionPDF
#Generando versión impresa
#versionTodo
#Generamos todos los documentos html apartir del md
echo -ne "${yellow}\r"
for file in `find $repo_path -iregex ".*\.md$" | sort `;
do
$0 $file
done;
echo -e "${end}"
#Generamos el index de ejemplos
index_ejemplos;
echo -ne "${yellow}\r"
$0 $repo_path/ejemplos/index.md;
#Generamos la página principal
imprimeTemario > $repo_path/index.md;
$0 $repo_path/index.md;
echo -e "${end}"
#Finalmente mostramos el tiempo en ejecución del script.
RUNTIME=$(expr `date +%s` - ${STARTTIME} )
echo -e "${light}Tiempo de ejecución:${end} ${yellow}${RUNTIME} Segundos${end}"
exit 0;
fi
#Revisamos que el archivo de entrada tenga la extensión adecuada.
(echo ${1} | grep -Evq '\.md$') && (echo "El documento de entrada ${1} debe tener la extension md"; exit 1 );
#generamos el nombre que tendra el archivo de salida
archivo_salida=`echo ${1} | sed 's/\.md$/.html/'`;
LOCAL_NAME=$(echo ${archivo_salida} | sed "s|${repo_path}||");
NUM_SESION=$(echo ${LOCAL_NAME} | grep -Eo "sesion[0-9]+" | grep -Eo "[1-9]+" | sed -r 's/^[0]+//');
if [ ! "$NUM_SESION" ]
then
NUM_SESION='0'
fi
echo -ne "\t${LOCAL_NAME} \r";
#Optenemos la referencia local
aux_path_level=`echo ${1} | sed "s|${repo_path}||i" | xargs dirname`;
refPath='./';
while [ "${aux_path_level}" != "/" ]; do
aux_path_level=`dirname $aux_path_level`;
refPath=`echo ${refPath}../`;
done
USER=`eval whoami`
#generamos el titulo
TITLE=`markdown $1 | grep -Eo "<h1>.*</h1>" | head -1 | sed -r "s/<h1>(.*)<\/h1>/\1/"`
##########################################################################################
#generando el archivo de salida.
##########################################################################################
cat "$repo_path/plantilla/cabecera.html" |\
sed "s|%NUM_SESIONES%|$NUM_SESIONES|g;s|%refPath%|$refPath|g;s|%LOCAL_NAME%|$LOCAL_NAME|g;s|%TITLE%|$TITLE|g;s|%NUM_SESION%|$NUM_SESION|g"\
> $archivo_salida
#Generando el archivo en markdown
markdown $1 | sed -r 'N; s|\n</code>|</code>|g;' >> $archivo_salida
#Fin del content,Agregamos pie de pagina, finalmente cerramos el body y del documento html
cat "$repo_path/plantilla/pie_pagina.html" >> $archivo_salida
#//firefox $archivo_salida &