#!/bin/bash

TOOLCHAIN="$1"
shift

ARCH="$1"
shift

set -eux

SCRIPTPATH="$(
  cd -- "$(dirname "$0")" >/dev/null 2>&1
  pwd -P
)"
CRATEPATH="$(realpath "${SCRIPTPATH}/..")"

mkdir -p "${CRATEPATH}/target"

tty=
if [ -t 0 ] && [ -t 1 ]; then
  tty=-it
fi

privileged=
if [ "$ARCH" = x86 ] || [ "$ARCH" = arm ]; then
  privileged=--privileged
fi

docker run --rm $tty $privileged \
  --userns host \
  -e 'CARGO_HOME=/cargo' \
  -e 'CARGO_TARGET_DIR=/target' \
  -e TERM \
  -e "USER=$(id -un)" \
  --user "$(id -u):$(id -g)" \
  -v "${CARGO_HOME:-${HOME}/.cargo}":/cargo:z \
  -v /cargo/bin \
  -v "${CRATEPATH}:/project:z" \
  -v "$(rustc "+${TOOLCHAIN}" --print sysroot)":/rust:z,ro \
  -v "${CRATEPATH}/target:/target:z" \
  -w /project \
  "shurizzle/toolchain-gnu-musl-cargoenv-${ARCH}:latest" "$@"
