#!/bin/bash # -e Exit immediately if a command exits with a non-zero status. # -u Treat unset variables as an error when substituting. set -eu START=`date +%s` BACKUP_DATE=`date +%Y%m%d` BACKUP_LOGS_FILENAME=${BACKUP_DATE}_${URL}_logs.tar logs_backup() { echo "📥 Sauvegarde les logs" mkdir -p backups ssh $DOCKER_CONTEXT mkdir -p backups/${URL} docker --context $DOCKER_CONTEXT run -t --rm -v $HOME/backups/${URL}:/backup -v ${NAME}-log:/logs alpine:3.12.3 ash -c "cd /logs && tar cvf /backup/${BACKUP_LOGS_FILENAME} ." ssh $DOCKER_CONTEXT "sudo chown kosssi:docker $HOME/backups/${URL}/${BACKUP_LOGS_FILENAME}" scp $DOCKER_CONTEXT:$HOME/backups/${URL}/${BACKUP_LOGS_FILENAME} backups } logs_restore() { echo "📤 Restaure les logs" ssh $DOCKER_CONTEXT mkdir -p backups/${URL} scp backups/${BACKUP_LOGS_FILENAME} $DOCKER_CONTEXT:$HOME/backups/${URL}/ docker --context $DOCKER_CONTEXT run -t --rm -v $HOME/backups/${URL}:/backup -v ${NAME}-log:/logs alpine:3.12.3 ash -c "cd /logs && tar xvf /backup/${BACKUP_LOGS_FILENAME} --strip 1" } stats() { echo "🌠 Mise à jour de GoAccess" docker --context $DOCKER_CONTEXT exec -it ${STATS_CONTAINER} ash /bin/stats.sh generate } install() { echo "📦 Installation des dépendances 📦" echo "----------------------------------" echo echo "- Récupération du theme" git submodule update --init echo "- Installation des dépendances node du theme" cd themes/hugo-theme-lowtech && npm i } dev() { echo "🚧 Lancement du serveur pour le développement" hugo server -D } dev_prod() { echo "🚧 Lancement du serveur pour le développement sans les brouillons" hugo server } prod() { echo echo "🚀 Déploiement du site en mode production 🚀" echo rm -rf public hugo --minify --environment production node themes/hugo-theme-lowtech/scripts/typo #DATE=`date +\"%Y0101\"` && find public -exec touch -d $DATE {} + docker-compose --context $DOCKER_CONTEXT -f docker-compose.prod.yml up -d --build --force-recreate } staging() { echo echo "🚀 Déploiement du site en mode staging 🚀" echo rm -rf public hugo --minify -D --environment staging node themes/hugo-theme-lowtech/scripts/typo #DATE=`date +\"%Y0101\"` && find public -exec touch -d $DATE {} + docker-compose --context $DOCKER_CONTEXT -f docker-compose.staging.yml up -d --build --force-recreate } favicons() { echo echo "🔍 Génération des favicons à partir d'une image 512px" echo convert static/logo.png -resize 32x32 -colors 16 \( -clone 0 -resize 16x16 -extent 16x16 \) \( -clone 0 -resize 32x32 -extent 32x32 \) -delete 0 static/favicon.ico } help_generic() { echo echo "💡 Aide 💡" echo "----------" echo echo "Commandes :" echo "- ./run install 📦 Installation des dépendances" echo "- ./run dev 🚧 Lancement du serveur pour le développement" echo "- ./run dev_prod 🚧 Lancement du serveur pour le développement sans les brouillons" echo "- ./run prod 🚀 Déploiement du site en mode production" echo "- ./run staging 🚀 Déploiement du site en mode staging" echo "- ./run logs_backup 📥 Sauvegarde les logs" echo "- ./run logs_restore 📤 Restaure les logs" echo "- ./run stats 🌠 Mise à jour de GoAccess" echo "- ./run favicons 🔍 Génération des favicons à partir d'une image 512px" } end() { END=`date +%s` echo echo "✨ Done in $((END-START))s" echo }