From dbe6a60417774dc93d5b6df9dcdef1ef753ed913 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Mon, 16 Sep 2024 16:18:49 +0100 Subject: [PATCH] feat: allow selecting the nightly toolchain --- README.md | 14 ++++++++++++-- entrypoint.sh | 45 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 498e987..c375b86 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,22 @@ jobs: steps: - uses: https://git.kemitix.net/kemitix/rust@v1.80.0 with: - args: cargo test + args: nightly cargo test - uses: https://git.kemitix.net/kemitix/rust@v1.80.0 with: - args: cargo build + args: v1.79.0 cargo build ``` +The `args` is one of the following: + +- +- [ [nightly | stable | v1.xx.x] ] + +`COMMAND` is the command you want to run. The optional prefix is the Rust toolchain, or version. Allowed values are `nightly`, `stable` or a Rust version. + +Where the optional prefix is not given, the `stable` toolchain will be used. + + ## Contents - nodejs diff --git a/entrypoint.sh b/entrypoint.sh index 284c41a..de787ef 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -2,5 +2,46 @@ set -e -rustup update -${INPUT_ARGS} +echo "INPUT_ARGS: ${INPUT_ARGS}" + +# split input into an array +read -ra ARGS <<<"${INPUT_ARGS}" + +# default toolchain +TOOLCHAIN="stable" +echo "Default toolchain: ${TOOLCHAIN}" + +# if first parameter is 'nightly'... +if test "${ARGS[0]}" == "nightly"; then + TOOLCHAIN="nightly" + ARGS=("${ARGS[@]:1}") +fi +if test "${ARGS[0]}" == "stable"; then + TOOLCHAIN="stable" # redundant as this is the default + ARGS=("${ARGS[@]:1}") +fi +if [[ "${ARGS[0]}" == v1* ]]; then + TOOLCHAIN="${ARGS[0]:1}" + ARGS=("${ARGS[@]:1}") +fi +echo "Selected toolchain: ${TOOLCHAIN}" + +rustup update "${TOOLCHAIN}" + +if test "${ARGS[0]}" == "cargo";then + PRE_COMMAND="cargo +${TOOLCHAIN} " +else + PRE_COMMAND="${ARGS[0]}" +fi +ARGS=("${ARGS[@]:1}") + +# ensure toolchain is up-to-date +# recombine remaining arguments +COMMAND=$( + IFS=" " + echo "${ARGS[*]}" +) + +# execute command +echo "${PRE_COMMAND} ${COMMAND}" +${PRE_COMMAND} ${COMMAND}