#!/bin/bash

PROGNAME="${BASH_SOURCE[0]}"
HERE="$(cd "$(dirname "$PROGNAME")" &>/dev/null && pwd)"
READIES=$(cd $HERE/.. && pwd)
. $READIES/shibumi/defs

GOOD_NIGHTLY=nightly-2022-01-09

if [[ -f $HOME/.cargo/env ]]; then
	source $HOME/.cargo/env
fi
if ! is_command rustup; then
	runn $SUDO $READIES/bin/getget
	runn "curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/rust-lang/rustup/master/rustup-init.sh -sSf | sh -s -- -y"
	source $HOME/.cargo/env
elif ! runn rustup update stable; then
	runn rustup toolchain uninstall stable
	runn rustup toolchain install stable
fi

# workaround for nightly install issues https://github.com/rust-lang/rls/issues/623
runn rustup toolchain uninstall nightly
runn rustup toolchain install nightly
runn rustup component add --toolchain nightly rust-src

runn rustup toolchain install $GOOD_NIGHTLY
runn rustup component add --toolchain $GOOD_NIGHTLY rust-src

rustup show

profile_d=`get_profile_d`
if [[ -f $HOME/.cargo/env ]]; then
    $SUDO cp $HOME/.cargo/env $profile_d/rust.sh
elif [[ -f /usr/local/cargo/env ]]; then
	$SUDO cp /usr/local/cargo/env $profile_d/rust.sh
else
	eprint "rust: environment file not found"
	exit 1
fi

f1=$(mktemp /tmp/rust.sh.XXXXXX)
cat <<-END > $f1
	export RUST_GOOD_NIGHTLY="$GOOD_NIGHTLY"
	END
$SUDO bash -c "cat $f1 >> $profile_d/rust.sh"
rm $f1

exit 0
