From ee2c2802d52a86a46812d9488551d250ea2701b1 Mon Sep 17 00:00:00 2001 From: butlerx Date: Tue, 1 Sep 2020 09:16:49 +0100 Subject: [PATCH] Add Build script --- build.sh | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 build.sh diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..c6d05dc --- /dev/null +++ b/build.sh @@ -0,0 +1,83 @@ +#! /usr/bin/env bash +### +### build.sh - Build WeTTy assets for packaging and dev +### +### Usage: +### build.sh [--flag] +### +### Options: +### --clean Clean repo and delete all built files +### --watch Run dev env and rebuild on change +### -h,--help Show this help dialogue + +set -eo pipefail +export NODE_ENV=development + +show_usage() { + : 'Print out help info' + # awk -F '### ' '/^### ?/ { print $2 }' "$0" + sed -n 's/^### \?//p' "$0" +} + +clean() { + : 'Clean repo and delete all built files' + rm -rf build +} + +build-css() { + : 'build sass assets in to css files' + sass src/assets/scss:build/assets/css \ + --load-path=node_modules \ + -s compressed \ + --no-source-map "$@" +} + +build-js() { + : 'Compile all typescript to javescript' + tsc -p tsconfig.json "$@" +} + +build-assets() { + : 'Move assets not handled by sass and typescript to build dir' + cp src/assets/*.ico build/assets +} + +watch() { + : 'Run dev env and rebuild on change' + build-assets + build-js + concurrently \ + --kill-others \ + --success first \ + "build-js --watch" \ + "build-css --watch" "nodemon ." +} + +build() { + : 'Build all assets' + build-assets + build-css + build-js +} + +if [[ $# -eq 0 ]]; then + build + exit +fi +while test $# -gt 0; do + case $1 in + --watch) + watch + exit + ;; + --clean) + clean + exit + ;; + --help | -h) + show_usage + exit 1 + ;; + esac + shift +done