#!/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 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 # 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 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 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 rm -f .generate .generating # Volver al principio para continuar con el siguiente sitio popd &>/dev/null done