5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-24 21:16:23 +00:00
panel/bin/jekyll_build_all
2018-10-02 09:21:00 -03:00

80 lines
2.5 KiB
Bash
Executable file

#!/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 2 -maxdepth 2 -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
test -f "${_path}/.generating" && continue
# 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
# Reiniciar el log con la fecha
date > build.log
# Instalar las gemas si no están
test -f .bundle/config \
|| bundle install --path=/srv/http/gems.kefir.red \
>> build.log
# Actualizar las gemas
bundle >> build.log
# Instalar los assets
test -f yarn.lock \
&& yarn >> build.log
# 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.
touch .generating
# Correr en baja prioridad
nice -n 19 \
bundle exec \
jekyll build --trace --destination "${_deploy}" 2>&1 \
| 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
echo "Everything was good! You can see your changes in https://${_site}" \
| mail -b "sysadmin@kefir.red" \
-s "${_site}: :)" \
${_mail[@]}
else
echo "There was an error, please check build log at https://sutty.kefir.red/" \
| 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
rm -f .generate .generating
# TODO descubrir el grupo según la distro?
chgrp -R http "${_deploy}"
find "${_deploy}" -type f -print0 | xargs -r -0 chmod 640
find "${_deploy}" -type d -print0 | xargs -r -0 chmod 2750
# Volver al principio para continuar con el siguiente sitio
popd &>/dev/null
done