From 6a8f56a7f1df9aaa446f0cc6298ef2eff320516d Mon Sep 17 00:00:00 2001 From: Arnaud de Bossoreille Date: Sun, 14 Jan 2024 21:06:34 +0100 Subject: [PATCH] Add toolchain management script --- scripts/switch_rust_toolchain.sh | 82 ++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100755 scripts/switch_rust_toolchain.sh diff --git a/scripts/switch_rust_toolchain.sh b/scripts/switch_rust_toolchain.sh new file mode 100755 index 0000000..63a20bf --- /dev/null +++ b/scripts/switch_rust_toolchain.sh @@ -0,0 +1,82 @@ +#!/bin/sh + +set -eu + +RUST_TOOLCHAIN= + +SCRIPTS_DIR=$(dirname "$0") +BASENAME=$(basename "$0") +WORKSPACE_DIR=$(cd $SCRIPTS_DIR/.. && pwd) +RUST_TOOLCHAIN_FILE="$WORKSPACE_DIR/rust-toolchain" + +MSRV=$(cat "$WORKSPACE_DIR/truc/Cargo.toml" | sed -n -e 's/^\s*rust-version\s*=\s*"\([^"]*\)"\s*$/\1/p') + +usage() { + echo "$BASENAME -c|--clear" + echo " clear \`rust-toolchain\` (use system default)" + echo "$BASENAME -m|--msrv" + echo " select \"$MSRV\"" + echo "$BASENAME -s|--stable" + echo " select \"stable\"" + echo "$BASENAME -n|--nightly" + echo " select \"nightly\"" + echo "$BASENAME -v|--version " + echo " select specific version" + echo "$BASENAME -h|--help" + echo " show this help and exit" +} + +while [ $# -gt 0 ]; do + case $1 in + -c|--clear) + RUST_TOOLCHAIN= + shift + ;; + -m|--msrv) + RUST_TOOLCHAIN="$MSRV" + shift + ;; + -s|--stable) + RUST_TOOLCHAIN="stable" + shift + ;; + -n|--nightly) + RUST_TOOLCHAIN="nightly" + shift + ;; + -v|--version) + RUST_TOOLCHAIN="$2" + shift + shift + ;; + -h|--help) + usage + exit 0 + shift + ;; + -*|--*) + echo "Unknown option $1" > /dev/stderr + echo > /dev/stderr + usage > /dev/stderr + exit 1 + ;; + *) + echo "Unexpected positional argument" > /dev/stderr + echo > /dev/stderr + usage > /dev/stderr + exit 1 + ;; + esac +done + +echo "Removing \`Cargo.lock\`..." +rm -f "$WORKSPACE_DIR/Cargo.lock" + +if [ x"$RUST_TOOLCHAIN" = x ] +then + echo "Clearing \`$RUST_TOOLCHAIN_FILE\`..." + rm -f "$RUST_TOOLCHAIN_FILE" +else + echo "Switching $RUST_TOOLCHAIN_FILE to \"$RUST_TOOLCHAIN\"" + echo "$RUST_TOOLCHAIN" >| "$RUST_TOOLCHAIN_FILE" +fi