name: Rust

concurrency:
    group: Rust-${{ github.workflow }}-${{ github.ref }}
    cancel-in-progress: true

permissions:
    security-events: write

on:
    workflow_dispatch:
    push:
        branches: [Current]
    pull_request:
        branches: [Current]
    workflow_call:

jobs:
    Build:
        runs-on: ubuntu-latest

        env:
            ADBLOCK: true
            ASTRO_TELEMETRY_DISABLED: 1
            AUTOMATEDLAB_TELEMETRY_OPTOUT: 1
            AZURE_CORE_COLLECT_TELEMETRY: 0
            CHOOSENIM_NO_ANALYTICS: 1
            DIEZ_DO_NOT_TRACK: 1
            DOTNET_CLI_TELEMETRY_OPTOUT: 1
            DOTNET_INTERACTIVE_CLI_TELEMETRY_OPTOUT: 1
            DO_NOT_TRACK: 1
            ET_NO_TELEMETRY: 1
            GATSBY_TELEMETRY_DISABLED: 1
            GATSBY_TELEMETRY_OPTOUT: 1
            GATSBY_TELEMETRY_OPT_OUT: 1
            GRIT_TELEMETRY_DISABLED: 1
            HASURA_GRAPHQL_ENABLE_TELEMETRY: false
            HINT_TELEMETRY: off
            HOMEBREW_NO_ANALYTICS: 1
            INFLUXD_REPORTING_DISABLED: true
            ITERATIVE_DO_NOT_TRACK: 1
            NEXT_TELEMETRY_DEBUG: 1
            NEXT_TELEMETRY_DISABLED: 1
            NG_CLI_ANALYTICS: false
            NUXT_TELEMETRY_DISABLED: 1
            PIN_DO_NOT_TRACK: 1
            POWERSHELL_TELEMETRY_OPTOUT: 1
            SAM_CLI_TELEMETRY: 0
            STNOUPGRADE: 1
            STRIPE_CLI_TELEMETRY_OPTOUT: 1
            TELEMETRY_DISABLED: 1
            TERRAFORM_TELEMETRY: 0

        strategy:
            matrix:
                toolchain: ["stable", "nightly"]

        steps:
            - uses: actions/checkout@v4.1.7

            - uses: actions-rs/toolchain@v1.0.7
              with:
                  profile: minimal
                  toolchain: ${{ matrix.toolchain }}

            - uses: actions/cache@v4.0.2
              with:
                  path: |
                      ~/.cargo/bin/
                      ~/.cargo/registry/index/
                      ~/.cargo/registry/cache/
                      ~/.cargo/git/db/
                      target/
                      Target/
                  key: ${{ runner.os }}-cargo-${{ hashFiles('./Cargo.toml') }}
            - uses: actions-rs/cargo@v1.0.3
              with:
                command: build
                args: --release --all-features --manifest-path ./Cargo.toml
