#!/bin/bash

#ESCAPE SEQUENCES
CLEAR="\033[0m"
BOLD="\033[1"
FG_BLACK="\033[30"
FG_RED="\033[31"
FG_GREEN="\033[32"
FG_YELLOW="\033[33"
FG_BLUE="\033[34"
FG_MAGENTA="\033[35"
FG_CYAN="\033[36"
FG_WHITE="\033[37"
FG_BR_BLACK="\033[90"
FG_BR_RED="\033[91"
FG_BR_GREEN="\033[92"
FG_BR_YELLOW="\033[93"
FG_BR_BLUE="\033[94"
FG_BR_MAGENTA="\033[95"
FG_BR_CYAN="\033[96"
FG_BR_WHITE="\033[97"

CC=clang
CFLAGS="-Wall -Werror -pedantic -Iinclude "

PCKR_SRC="\
	src/path_utils.c \
	src/argparse.c \
	src/io.c \
	src/darr.c \
	src/pak.c \
	src/pckr.c \
	src/main.c"

PCKR_TEST_SRC="\
	src/path_utils.c \
	src/io.c \
	src/pckr_test.c"
PCKR_TEST_OUT="pckr_test"

PAKRD_TEST_SRC="\
	src/path_utils.c \
	src/io.c \
	src/darr.c \
	src/pak.c \
	src/pakrd_test.c"
PAKRD_TEST_OUT="pakrd_test"

BUILD_TYPE="debug"


while [[ $# -gt 0 ]]; do
  case $1 in
    -r|--release)
      BUILD_TYPE="release"
      shift # past argument
      ;;
    -*|--*|*)
      echo "Usage: build [-r | --release]"
      exit 1
      ;;
  esac
done


if [[ $BUILD_TYPE == "debug" ]]; then
	CFLAGS+="-g "
	PCKR_OUT="pckr"
else
	CFLAGS+="-O3 "
	PCKR_OUT="../proj/pckr"
fi


# Build pckr executable
(set -x ; $CC $CFLAGS $PCKR_SRC -o $PCKR_OUT)


# Build pckr_test executable
(set -x ; $CC $CFLAGS $PCKR_TEST_SRC -o $PCKR_TEST_OUT)


# Build pakrd_test executable
(set -x ; $CC $CFLAGS $PAKRD_TEST_SRC -o $PAKRD_TEST_OUT)


# Create test pak
./pckr ./test_assets ./assets


# Run pckr_test
(./$PCKR_TEST_OUT && echo -e "\npckr_test  [${FG_BR_GREEN}m${BOLD}m SUCCESS $CLEAR]") || echo -e "\npckr_test  [${FG_BR_RED}m${BOLD}m FAILURE $CLEAR]"


# Run pakrd_test
(./$PAKRD_TEST_OUT && echo -e "pakrd_test [${FG_BR_GREEN}m${BOLD}m SUCCESS $CLEAR]") || echo -e "pakrd_test [${FG_BR_RED}m${BOLD}m FAILURE $CLEAR]"


# Clean test assets
rm ./assets.pak
rm pckr_test
rm pakrd_test