#!/bin/bash

set -euo pipefail
cache="$HOME"/.cache/matplotlib

fold_start() {
    key=$1
    title=$2
    echo -e "travis_fold:start:$key\e[2K"
    echo -e "travis_time:start:$key\e[2K"
    tick="$(date +%s)"
    echo "$title"
}

fold_end() {
    key=$1
    tock="$(date +%s)"
    nano=000000000
    echo -e "travis_time:end:$key:start=$tick$nano,finish=$tock$nano,duration=$((tock - tick))$nano\e[2K"
    echo -e "travis_fold:end:$key\e[2K"
}

cached_download() {
    file=$1
    url=$2
    shasum=$3
    path="$cache/$file"
    if [[ ! -f "$path"
          || "$(shasum -a 256 "$path" | awk '{print $1}')" != "$shasum" ]]
    then
        curl -L -o "$path" "$url"
    fi
}

fold_start Python "Install Python 3.8 from python.org"
cached_download python-3.8.5-macosx10.9.pkg \
                https://www.python.org/ftp/python/3.8.5/python-3.8.5-macosx10.9.pkg \
                e27c5a510c10f830084fb9c60b9e9aa8719d92e4537a80e6b4252c02396f0d29
sudo installer -package "$cache"/python-3.8.5-macosx10.9.pkg -target /
sudo ln -s /usr/local/bin/python3 /usr/local/bin/python
hash -r
fold_end Python

fold_start ccache 'Install ccache (compile it ourselves)'
cached_download ccache-3.7.11.tar.xz \
                https://github.com/ccache/ccache/releases/download/v3.7.11/ccache-3.7.11.tar.xz \
                8d450208099a4d202bd7df87caaec81baee20ce9dd62da91e9ea7b95a9072f68
tar xf "$cache"/ccache-3.7.11.tar.xz
pushd ccache-3.7.11
./configure --prefix=/usr/local
make -j2
make install
popd
for compiler in clang clang++ cc gcc c++ g++; do
  ln -sf ccache /usr/local/bin/$compiler
done
fold_end ccache

fold_start freetype 'Install freetype (just unpack into the build directory)'
cached_download freetype-2.6.1.tar.gz \
                https://download.savannah.gnu.org/releases/freetype/freetype-2.6.1.tar.gz \
                0a3c7dfbda6da1e8fce29232e8e96d987ababbbf71ebc8c75659e4132c367014
mkdir -p build
tar -x -C build -f "$cache"/freetype-2.6.1.tar.gz
fold_end freetype
