build (1323B)
1 #!/bin/bash 2 set -Eeuo pipefail 3 4 SRC="src" 5 DEPLOY="deploy" 6 TEMPLATE="$SRC/template.html" 7 SERVER="/var/www/davidvoz.net" 8 RSYNC_OPTS="-avz --delete" 9 10 GREEN="\033[32m" 11 RED="\033[31m" 12 BLUE="\033[34m" 13 RESET="\033[0m" 14 15 error_help() { 16 echo 17 echo -e "${RED}ERROR${RESET}" 18 echo " sh build.sh will generate $DEPLOY where files are ready" 19 echo " sh build.sh release will have $DEPLOY be rsynced to your server" 20 } 21 22 trap 'error_help; exit 1' ERR 23 24 release() { 25 echo -e "${GREEN}releasing to server${RESET}" 26 rsync $RSYNC_OPTS "$DEPLOY/" "$SERVER" 27 echo -e "${GREEN}done${RESET}" 28 } 29 30 building() { 31 find "$SRC" -type f -name '*.md' | while read -r md; do 32 rel="${md#$SRC/}" 33 html="$DEPLOY/${rel%.md}.html" 34 35 mkdir -p "$(dirname "$html")" 36 37 pandoc "$md" --standalone --template="$TEMPLATE" -o "$html" 38 39 echo -e " ${BLUE}generated${RESET} $html" 40 done 41 } 42 43 copying() { 44 find "$SRC" -type f \ 45 ! -name '*.md' \ 46 ! -name 'template.html' \ 47 | while read -r file; do 48 49 rel="${file#$SRC/}" 50 dest="$DEPLOY/$rel" 51 52 mkdir -p "$(dirname "$dest")" 53 cp "$file" "$dest" 54 done 55 } 56 57 case "${1-}" in 58 release|-r) 59 release 60 exit 0 61 ;; 62 esac 63 64 echo -e "${GREEN}cleaning${RESET}" 65 rm -rf "$DEPLOY" 66 mkdir -p "$DEPLOY" 67 68 echo -e "${GREEN}building markdown${RESET}" 69 building 70 71 echo -e "${GREEN}copying files${RESET}" 72 copying 73 74 echo -e "${GREEN}done${RESET}"