compile.sh

#!/bin/bash

has_md5() {
  for PROG in md5 md5sum; do
    if which $PROG >/dev/null 2>&1; then
       MD5=$PROG
       break
    fi
  done

  if [[ -z $MD5 ]]; then
    echo "No suitable MD5 program found; install one of md5 or md5sum"
    exit 1
  fi
}

has_uglify() {
  if ! which uglifyjs >/dev/null 2>&1; then
    echo "Uglify.js not found. Please install it (probably with npm install uglify-js)"
    exit 1
  fi
}

daemon() {
  chsum1=""

  while [[ true ]]
  do
    chsum2=`find src/ -type f -exec $MD5 {} \;`
    if [[ $chsum1 != $chsum2 ]] ; then           
      compile
      chsum1=`find src/ -type f -exec $MD5 {} \;`
      echo "Watching..."
    fi
    sleep 2
  done
}

compile() {
  echo "Compiling to crypton.js..."
  mkdir -p dist
  cat \
    src/core.js \
    src/account.js \
    src/session.js \
    src/container.js \
    src/transaction.js \
    src/peer.js \
    src/inbox.js \
    src/diff.js \
    src/vendor/*.js \
    > dist/crypton.js
  uglifyjs dist/crypton.js > dist/crypton.min.js
}

case $1 in
  --once)
    has_uglify
    compile
    ;;
  *)
    has_md5
    has_uglify
    daemon
    ;;
esac