Skip to content

Create command-line interface with environment flag (#2) #5

Create command-line interface with environment flag (#2)

Create command-line interface with environment flag (#2) #5

Workflow file for this run

---
name: Rust
"on":
push:
branches:
- main
pull_request:
workflow_dispatch:
env:
CARGO_INCREMENTAL: 0
CARGO_PROFILE_TEST_DEBUG: 0
RUSTC_WRAPPER: "sccache"
SCCACHE_GHA_ENABLED: "true"
jobs:
detect-changes:
name: Detect changes
runs-on: ubuntu-latest
outputs:
any_changed: ${{ steps.detect-changes.outputs.any_changed }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get changed files
id: detect-changes
uses: tj-actions/changed-files@v43
with:
files: |
.github/workflows/rust.yml
src/**/*
Cargo.toml
Cargo.lock
- name: Print changed files
run: |
for file in ${{ steps.detect-changes.outputs.all_changed_files }}; do
echo "$file"
done
lint:
name: Lint code
runs-on: ubuntu-latest
needs: detect-changes
if: needs.detect-changes.outputs.any_changed == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Cache build artifacts
uses: swatinem/[email protected]
with:
prefix-key: cargo-1.76.0
- name: Cache compilation artifacts
uses: mozilla-actions/[email protected]
- name: Run Clippy
run: cargo clippy --all-targets --all-features -- -D warnings
style:
name: Check style
runs-on: ubuntu-latest
needs: detect-changes
if: needs.detect-changes.outputs.any_changed == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run Rustfmt
run: cargo fmt --all -- --check
test:
name: Run tests
runs-on: ubuntu-latest
needs: detect-changes
if: needs.detect-changes.outputs.any_changed == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Cache build artifacts
uses: swatinem/[email protected]
with:
prefix-key: cargo-1.76.0
- name: Cache compilation artifacts
uses: mozilla-actions/[email protected]
- name: Run tests
run: cargo test --all-features --all-targets