davidvozdotnet

davidvoz.net source code
git clone https://git.davidvoz.net/davidvozdotnet.git
Log | Files | Refs

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}"