From 7b827189c8b6e49017db67e1f2a8014ce8370a58 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 --- .forgejo/workflows/test.yml | 14 ++++++++---- README.md | 14 ++++++++++-- entrypoint.sh | 45 +++++++++++++++++++++++++++++++++++-- 3 files changed, 65 insertions(+), 8 deletions(-) diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml index 5434bd4..eb00f17 100644 --- a/.forgejo/workflows/test.yml +++ b/.forgejo/workflows/test.yml @@ -5,18 +5,24 @@ on: jobs: test: runs-on: docker + strategy: + matrix: + toolchain: + - stable + - nightly + steps: - uses: actions/checkout@v4 - - name: Test + - name: Test ${{ toolchain }} uses: https://git.kemitix.net/kemitix/rust@next with: - args: cargo test + args: ${{ toolchain }} cargo test - - name: Build + - name: Build ${{ toolchain }} uses: https://git.kemitix.net/kemitix/rust@next with: - args: cargo build + args: ${{ toolchain }} cargo build - name: Run uses: https://git.kemitix.net/kemitix/rust@next 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}