#!/usr/bin/env bash
. $BIN_DIR/_lib.sh

echo '🗄  Formatting ...'

# Format *.js files
format-js() {
  FILES=""

  if [[ ! -z ${@+x} ]]; then
    _IFS=$IFS
    IFS=" "
    FILES=${@}
  else
    FILES=$(find $WORKING_DIR -name '*.js' -not -path "$WORKING_DIR/.reify-cache/*" -not -path "$WORKING_DIR/node_modules/*" -not -path "$WORKING_DIR/dist/*" -not -path "$WORKING_DIR/tmp/*")
  fi

  [[ "${FILES:-x}" = "x" ]] && return

  echo -e "   $(echo "$FILES" | wc -l | awk '{print $1}') JavaScript files"

  prettier --config "$MONO_DIR/.prettierrc" --ignore-path "$MONO_DIR/.prettierignore" --write $FILES >/dev/null

  if [[ ! -z ${_IFS+x} ]]; then
    IFS=$_IFS
  fi
}

# Format *.html <script> and <style> elements
format-html() {
  echo "Formatting html and svelte has been disabled."
  return 0

  FILES=""

  if [[ ! -z ${@+x} ]]; then
    _IFS=$IFS
    IFS=" "
    FILES=${@}
  else
    FILES=$(find $WORKING_DIR -name '*.svelte' -not -path "$WORKING_DIR/node_modules/*" -not -path "$WORKING_DIR/dist/*" -not -path "$WORKING_DIR/tmp/*")
  fi

  [[ "${FILES:-x}" = "x" ]] && return

  echo -e "   $(echo "$FILES" | wc -l | awk '{print $1}') Svelte files"

  prettier --config "$MONO_DIR/.prettierrc" --ignore-path "$MONO_DIR/.prettierignore" --write $FILES >/dev/null

  if [[ ! -z ${_IFS+x} ]]; then
    IFS=$_IFS
  fi
}

format-all() {
  format-js
  format-html
}

ARGC=$#

if [[ $ARGC -gt 1 ]]; then
  ARGV=( $@ )

  COMMAND=${ARGV[0]}
  FILES=${ARGV[@]:1}

  case $COMMAND in
    "js" )
      format-js $FILES
      ;;
    "html" )
      format-html $FILES
      ;;
    * )
      format-all
      ;;
  esac
else
  format-all
fi