#!/bin/bash

set -e

script/bootstrap

# export this path right here (was in script/spec before)
export SASS_LIBSASS_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../ && pwd )"

# use some defaults if not running under travis ci
if [ "x$TRAVIS_BUILD_DIR" == "x" ]; then export TRAVIS_BUILD_DIR=$(pwd)/build; fi
if [ "x$SASS_SASSC_PATH" == "x" ]; then export SASS_SASSC_PATH=$(pwd)/sassc; fi
if [ "x$SASS_SPEC_PATH" == "x" ]; then export SASS_SPEC_PATH=$(pwd)/sass-spec; fi

if [ "x$COVERAGE" == "xyes" ]; then
  COVERAGE_OPT="--enable-coverage"
  export EXTRA_CFLAGS="--coverage"
  export EXTRA_CXXFLAGS="--coverage"
  export EXTRA_LDFLAGS="--coverage"
else
  COVERAGE_OPT="--disable-coverage"
fi

if [ "x$BUILD" == "xstatic" ]; then
  SHARED_OPT="--disable-shared --enable-static"
  MAKE_TARGET="static"
else
  # Makefile of sassc wants to link to static
  SHARED_OPT="--enable-shared --enable-static"
  MAKE_TARGET="shared"
fi

if [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
  MAKE_OPTS="$MAKE_OPTS -j1 V=1"
else
  MAKE_OPTS="$MAKE_OPTS -j3 V=1"
fi

if [ "x$PREFIX" == "x" ]; then
  if [ "x$TRAVIS_BUILD_DIR" == "x" ]; then
    PREFIX=$SASS_LIBSASS_PATH/build
  else
    PREFIX=$TRAVIS_BUILD_DIR/build
  fi
fi

echo SASS_LIBSASS_PATH: $SASS_LIBSASS_PATH
echo TRAVIS_BUILD_DIR: $TRAVIS_BUILD_DIR
echo SASS_SASSC_PATH: $SASS_SASSC_PATH
echo SASS_SPEC_PATH: $SASS_SPEC_PATH
echo INSTALL_LOCATION: $PREFIX

if [ "x$AUTOTOOLS" == "xyes" ]; then

  echo -en 'travis_fold:start:configure\r'
  autoreconf --force --install
  ./configure --enable-tests $COVERAGE_OPT \
    --disable-silent-rules \
    --with-sassc-dir=$SASS_SASSC_PATH \
    --with-sass-spec-dir=$SASS_SPEC_PATH \
    --prefix=$PREFIX \
    ${SHARED_OPT}
  echo -en 'travis_fold:end:configure\r'

  make clean $MAKE_OPTS

  # install to prefix directory
  PREFIX="$PREFIX" make install

else

  make clean $MAKE_OPTS

fi

# install to prefix directory
PREFIX="$PREFIX" make install

ls -la $PREFIX/*

echo successfully compiled libsass
echo AUTOTOOLS=$AUTOTOOLS COVERAGE=$COVERAGE BUILD=$BUILD

if [ "$CONTINUOUS_INTEGRATION" == "true" ] && [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ "$TRAVIS_OS_NAME" == "linux" ];
then
  echo "Downloading jq"

  curl http://stedolan.github.io/jq/download/linux64/jq > jq
  chmod +x jq

  echo "Fetching PR $TRAVIS_PULL_REQUEST"

  JSON=$(curl -u xzyfer:882aeec2a5b847b7d67c61d7788c2721f011e2ea -sS https://api.github.com/repos/sass/libsass/pulls/$TRAVIS_PULL_REQUEST)

  SPEC_PR=$(echo $JSON | jq -r .body)

  BLAH="sass\/sass-spec(#|\/pull\/)([0-9]+)"

  if [[ $SPEC_PR =~ $BLAH ]];
  then
    SPEC_PR="${BASH_REMATCH[2]}"

    echo "Fetching Sass Spec PR $SPEC_PR"

    JSON=$(curl -u xzyfer:882aeec2a5b847b7d67c61d7788c2721f011e2ea -sS https://api.github.com/repos/sass/sass-spec/pulls/$SPEC_PR)

    SPEC_REMOTE=$(echo $JSON | jq -r .head.repo.clone_url)
    SPEC_SHA=$(echo $JSON | jq -r .head.sha)

    echo "Cloning $SPEC_REMOTE"

    git clone $SPEC_REMOTE sass-spec-pr

    echo "Checking out $SPEC_SHA"

    cd sass-spec-pr
    git checkout $SPEC_SHA

    echo "Re-running Sass Spec"

    cd ..
    SASS_SPEC_PATH="sass-spec-pr" LD_LIBRARY_PATH="$PREFIX/lib/" make $MAKE_OPTS test_build
  else
    LD_LIBRARY_PATH="$PREFIX/lib/" script/spec
  fi
else
  LD_LIBRARY_PATH="$PREFIX/lib/" script/spec
fi
