mirror of
https://github.com/shiroyashik/sculptor.git
synced 2025-12-06 04:51:13 +03:00
54 lines
1.6 KiB
YAML
54 lines
1.6 KiB
YAML
name: Build project
|
|
description: Builds the project for specified targets using cargo-zigbuild.
|
|
|
|
inputs:
|
|
targets:
|
|
description: A comma-separated list of Rust targets.
|
|
default: x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-pc-windows-gnu
|
|
lint:
|
|
description: A boolean indicating if linting (cargo-fmt, clippy) should be run
|
|
default: true
|
|
test:
|
|
description: A boolean indicating if tests should be run
|
|
default: true
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
|
|
- name: Convert input targets to Bash array
|
|
# read comma-separated list of targets, converts it to
|
|
# an array of arguments for cargo-zigbuild like this:
|
|
# [ "--target", "<target1>", "--target", "<target2>", ... ]
|
|
shell: bash
|
|
run: |
|
|
targets=()
|
|
while read -r target
|
|
do targets+=("--target" "$target")
|
|
done < <(tr , '\n' <<<"${{ inputs.targets }}")
|
|
declare -p targets > /tmp/targets.sh
|
|
|
|
- name: Check with cargo-fmt
|
|
if: inputs.lint == true
|
|
shell: sh
|
|
run: cargo fmt -v --all -- --check
|
|
|
|
- name: Run Clippy with cargo-zigbuild
|
|
if: inputs.lint == true
|
|
shell: bash
|
|
run: |
|
|
. /tmp/targets.sh
|
|
cargo-zigbuild clippy -v --all-targets "${targets[@]}" -- -D warnings
|
|
|
|
- name: Build with cargo-zigbuild
|
|
shell: bash
|
|
run: |
|
|
. /tmp/targets.sh
|
|
cargo-zigbuild build -v -r --bin sculptor "${targets[@]}"
|
|
|
|
- name: Test with cargo-zigbuild
|
|
shell: bash
|
|
if: inputs.test == true
|
|
run: |
|
|
. /tmp/targets.sh
|
|
cargo-zigbuild test -v -r "${targets[@]}"
|