#!/usr/bin/env bash set -euo pipefail docs=( documentation ) core=( gogol-core gogol ) examples=( gogol-examples ) priority_=( compute drive appengine storage oauth2 gmail ) priority=${priority_[@]/#/gogol-} library_=( $(ls -d gogol-*) ) library=( $(echo ${library_[@]} ${priority[@]} | tr ' ' '\n' | sort | uniq -u) ) entry() { local ver="$1" local lib="$2" cat <<-ENTRY - env: GHCVER=${ver} LIBRARY=${lib} addons: { apt: { packages: [ghc-${ver}], sources: [hvr-ghc] } } ENTRY } matrix() { local title="$1" declare -a versions=("${!2}") declare -a selected=("${!3}") cat <<-TITLE # ${title} TITLE for lib in ${selected[@]}; do for ver in ${versions[@]}; do entry $ver $lib done done } ghc_82=( 8.2.2 ) ghc_84=( 8.4.4 ) ghc_86=( 8.6.3 ) ghc_all=( 8.6.3 8.4.4 8.2.2) travis=".travis.yml" echo "Updating ${travis}" sed -i -e '/# GENERATED/,/# END GENERATED/d' "${travis}" echo "# GENERATED" >> "${travis}" matrix "Documentation" ghc_82[@] docs[@] >> "${travis}" matrix "Core" ghc_all[@] core[@] >> "${travis}" matrix "Priority" ghc_all[@] priority[@] >> "${travis}" matrix "Remainder" ghc_82[@] library[@] >> "${travis}" matrix "Examples" ghc_82[@] examples[@] >> "${travis}" echo "# END GENERATED" >> "${travis}" echo "Done."