pict-rs/.forgejo/actions/prepare-rust/action.yaml
2024-02-07 19:38:28 -06:00

69 lines
2 KiB
YAML

name: Prepare Rust
description: Prepare an environment to build or test rust packages
inputs:
targets:
description: "JSON Array of targets to add to rustup"
required: false
default: '[]'
rust-version:
description: "Version of rust to install"
required: true
default: '1.75.0'
runs:
using: "composite"
steps:
-
name: Install zig
uses: https://github.com/goto-bus-stop/setup-zig@v2
with:
version: 0.11.0
-
name: Fetch rust cache
id: cache
uses: https://github.com/actions/cache/restore@v4
with:
path: |
~/.cargo/bin
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
~/.rustup
target/
key: rust-${{ inputs.rust-version }}-${{ join(fromJSON(inputs.targets), '-') }}-${{ hashFiles('Cargo.toml') }}-${{ hashFiles('Cargo.lock')}}
-
name: Install rustup and rust
if: steps.cache.outputs.cache-hit != 'true'
uses: https://github.com/dtolnay/rust-toolchain@${{ inputs.rust-version }}
with:
components: clippy
targets: ${{ join(fromJSON(inputs.targets), ',') }}
-
name: Install cargo-zigbuild
if: steps.cache.outputs.cache-hit != 'true'
run: cargo install cargo-zigbuild
-
name: Fetch dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: cargo fetch
-
name: Export path
if: steps.cache.outputs.cache-hit == 'true'
run: |
echo "${HOME}/.cargo/bin" >> "${GITHUB_PATH}"
echo "${HOME}/.rustup/bin" >> "${GITHUB_PATH}"
-
name: Populate rust cache
if: steps.cache.outputs.cache-hit != 'true'
uses: https://github.com/actions/cache/save@v4
with:
path: |
~/.cargo/bin
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
~/.rustup
target/
key: ${{ steps.cache.outputs.cache-primary-key }}