set -ex

main() {
  local target=
  if [ $TRAVIS_OS_NAME = linux ]; then
    target=x86_64-unknown-linux-musl
    sort=sort
  else
    target=x86_64-apple-darwin
    sort=gsort  # for `sort --sort-version`, from brew's coreutils.
  fi

  # Builds for iOS are done on OSX, but require the specific target to be
  # installed.
  case $TARGET in
    aarch64-apple-ios)
      rustup target install aarch64-apple-ios
      ;;
    armv7-apple-ios)
      rustup target install armv7-apple-ios
      ;;
    armv7s-apple-ios)
      rustup target install armv7s-apple-ios
      ;;
    i386-apple-ios)
      rustup target install i386-apple-ios
      ;;
    x86_64-apple-ios)
      rustup target install x86_64-apple-ios
      ;;
  esac

  # This fetches latest stable release
  local tag=$(git ls-remote --tags --refs --exit-code https://github.com/japaric/cross \
    | cut -d/ -f3 \
    | grep -E '^v[0.1.0-9.]+$' \
    | $sort --version-sort \
    | tail -n1)
  curl -LSfs https://japaric.github.io/trust/install.sh | \
    sh -s -- \
    --force \
    --git japaric/cross \
    --tag $tag \
    --target $target

  # Install test dependencies
  rustup component add rustfmt-preview
  rustup component add clippy-preview
}

main
