#! /bin/bash

aerender='/Applications/Adobe After Effects 2022/aerender'

help() {
  echo "`color 2 Usage:` render [options] <file> [file...]"
  echo ""
  echo "`color 2 Options:`"
  echo "    `color 3 file`        .aep file for After Effects' aerender to render."
  echo "    `color 3 -h, --help`  Show this help text"
  echo "    `color 3 -k, --kill`  Kill allaerendercore processes (they tend to get stuck)."
  echo "                DO NOT use this if you have multiple renders running!"
  echo ""
}

# no args
if [[ "$#" < 1 ]]; then help; exit 0; fi

err() {
  echo `color 1 ✖ Error:` "$1"
  sfx beep
  exit 1
}

# proactively check for errors and args
for ARG in "$@"; do
  if [[ "$ARG" == "-k" || "$ARG" == "--kill" ]]; then
    KILL=true
  elif [[ "$ARG" == "-h" || "$ARG" == "--help" ]]; then
    help; exit 0
  elif [[ ! -f "$ARG" ]]; then
    err "File does not exist: $ARG"
  elif [[ "$ARG" != *.aep ]]; then
    err "File must be .aep: $ARG"
  else
    FILE="$ARG"
  fi
done

# kill aerendercore processes and quit
if [[ $KILL == true && -z $FILE ]]; then
  echo "Killing all aerendercore processes..."
  killall aerendercore
  exit 0
fi

# render
echo ""
ABSOLUTE_FILE_PATH="$(cd "$(dirname "$FILE")" && pwd)/$(basename "$FILE")"
command "$aerender" -project "$ABSOLUTE_FILE_PATH" || err "Render failed: $ARG"

# kill aerendercore processes
if [[ $KILL == true ]]; then
  echo "Killing all aerendercore processes..."
  killall aerendercore
fi

sfx ding
