2018-02-20 17:47:11 +00:00
|
|
|
#!/bin/bash
|
|
|
|
# TODO convertir a ruby!
|
|
|
|
set -e
|
|
|
|
|
|
|
|
rails_root="${PWD}"
|
|
|
|
|
|
|
|
# Encontrar todos los sitios únicos con el archivo `.generate`. Esto
|
|
|
|
# significa que la usuaria quiso generar el sitio.
|
|
|
|
find -L ./_sites -mindepth 3 -maxdepth 3 -name .generate \
|
|
|
|
| sed "s/\/\.generate$//" \
|
|
|
|
| while read _path ; do
|
|
|
|
# Como seguimos todos los symlinks y los sitios pueden estar
|
|
|
|
# vinculados entre sí, volvemos a chequear si existe el archivo para
|
|
|
|
# no generarlo dos veces
|
|
|
|
test -f "${_path}/.generate" || continue
|
2018-02-28 20:40:23 +00:00
|
|
|
test -f "${_path}/.generating" || continue
|
2018-02-20 17:47:11 +00:00
|
|
|
|
|
|
|
# Obtenemos las direcciones de correo de las responsables
|
|
|
|
_mail=($(cat "${_path}/.usuarias"))
|
|
|
|
_site="$(echo "${_path}" | xargs basename)"
|
|
|
|
_deploy="${rails_root}/_deploy/${_site}"
|
|
|
|
|
|
|
|
# Entrar al directorio del sitio
|
|
|
|
pushd "${_path}" &>/dev/null
|
|
|
|
|
|
|
|
# Crear el sitio con lujo de detalles y guardar un log, pero a la vez
|
|
|
|
# tenerlo en la salida estándar para poder enviar al MAILTO del
|
|
|
|
# cronjob.
|
|
|
|
#
|
|
|
|
# Ya que estamos, eliminamos la ruta donde estamos paradas para no dar
|
|
|
|
# información sobre la servidora.
|
2018-02-28 20:40:23 +00:00
|
|
|
touch .generating
|
2018-02-20 17:47:11 +00:00
|
|
|
bundle exec \
|
2018-02-28 19:10:50 +00:00
|
|
|
jekyll build --trace --destination "${_deploy}" 2>&1 \
|
2018-02-20 17:47:11 +00:00
|
|
|
| sed -re "s,${_path},,g" \
|
|
|
|
> "build.log"
|
|
|
|
|
|
|
|
# Acciones posteriores
|
|
|
|
# TODO convertir en un plugin de cada sitio?
|
|
|
|
if test $? -eq 0; then
|
|
|
|
# Si funciona, enviar un mail
|
|
|
|
# TODO enviar un mail más completo y no hardcodear direcciones
|
|
|
|
mail -b "sysadmin@kefir.red" \
|
|
|
|
-s "${_site}: :)" \
|
|
|
|
${_mail[@]}
|
|
|
|
else
|
|
|
|
mail -b "sysadmin@kefir.red" \
|
|
|
|
-s "${_site}: :(" \
|
|
|
|
${_mail[@]}
|
|
|
|
date +%s >.failed
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Eliminar el archivo para sacar el sitio de la cola de compilación
|
2018-02-28 20:40:23 +00:00
|
|
|
rm -f .generate .generating
|
2018-02-20 17:47:11 +00:00
|
|
|
|
|
|
|
# Volver al principio para continuar con el siguiente sitio
|
|
|
|
popd &>/dev/null
|
|
|
|
done
|