# Gitea Actions workflow for the Rust workspace. # This workflow is linux-runner friendly and does not touch real resource # directories. It intentionally avoids external GitHub Actions so self-hosted # runners do not need to clone action repositories through a network proxy. name: bat-rust on: push: branches: - "**" pull_request: workflow_dispatch: jobs: rust: name: Build and test Rust runs-on: linux env: CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 BAT_SKIP_ENV_FILE: "1" steps: - name: Checkout shell: bash run: | set -euo pipefail : "${GITHUB_SERVER_URL:?GITHUB_SERVER_URL is required}" : "${GITHUB_REPOSITORY:?GITHUB_REPOSITORY is required}" : "${GITHUB_SHA:?GITHUB_SHA is required}" repo_url="${GITHUB_SERVER_URL%/}/${GITHUB_REPOSITORY}.git" if [ -d .git ]; then git remote set-url origin "${repo_url}" 2>/dev/null || git remote add origin "${repo_url}" else git init . git remote add origin "${repo_url}" fi ref="${GITHUB_REF:-${GITHUB_SHA}}" git fetch --no-tags --depth=1 origin "${ref}" || git fetch --no-tags --depth=1 origin "${GITHUB_SHA}" git checkout --force --detach FETCH_HEAD git submodule update --init --recursive - name: Show tool versions shell: bash run: | set -euo pipefail command -v git rustc --version cargo --version rustfmt --version cargo clippy --version - name: Check formatting shell: bash run: cargo fmt --all -- --check - name: Check workspace shell: bash run: cargo check --workspace --locked - name: Build workspace shell: bash run: cargo build --workspace --locked - name: Run clippy shell: bash run: cargo clippy --workspace --all-targets --locked -- -D warnings - name: Run tests shell: bash run: cargo test --workspace --locked