# SPDX-License-Identifier: EUPL-1.2 name: Run cargo lints env: CARGO_INCREMENTAL: 0 CARGO_NET_RETRY: 10 CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse RUSTFLAGS: "-D warnings -W unreachable-pub -W rust-2021-compatibility -C debuginfo=0" RUSTUP_MAX_RETRIES: 10 RUST_BACKTRACE: short on: workflow_dispatch: pull_request: paths: - '.gitea/**' - 'melib/src/**' - 'melib/Cargo.toml' - 'meli/src/**' - 'meli/Cargo.toml' - 'Cargo.toml' - 'Cargo.lock' jobs: test: name: Lint on ${{ matrix.build }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: build: [linux-amd64, ] include: - build: linux-amd64 os: ubuntu-latest rust: stable target: x86_64-unknown-linux-gnu steps: - uses: actions/checkout@v3 - id: os-deps name: install OS dependencies run: | apt-get update apt-get install -y libdbus-1-dev pkg-config mandoc libssl-dev #- id: cache-rustup # name: Cache Rust toolchain # uses: https://github.com/actions/cache@v3 # with: # path: ~/.rustup # key: toolchain-${{ matrix.os }}-${{ matrix.rust }} #- if: ${{ steps.cache-rustup.outputs.cache-hit != 'true' }} - id: rustup-setup name: Install Rustup and toolchains shell: bash run: | if ! command -v rustup &>/dev/null; then curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail "https://sh.rustup.rs" | sh -s -- --default-toolchain none -y source "${HOME}/.cargo/env" echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH rustup toolchain install --profile minimal --component clippy,rustfmt --target ${{ matrix.target }} -- "${{ matrix.rust }}" rustup default ${{ matrix.rust }} fi - name: Configure cargo data directory # After this point, all cargo registry and crate data is stored in # $GITHUB_WORKSPACE/.cargo_home. This allows us to cache only the files # that are needed during the build process. Additionally, this works # around a bug in the 'cache' action that causes directories outside of # the workspace dir to be saved/restored incorrectly. run: echo "CARGO_HOME=$(pwd)/.cargo_home" >> $GITHUB_ENV #- id: cache-cargo # name: Cache cargo configuration and installations # uses: https://github.com/actions/cache@v3 # with: # path: ${{ env.CARGO_HOME }} # key: cargo-${{ matrix.os }}-${{ matrix.rust }} #- if: ${{ steps.cache-cargo.outputs.cache-hit != 'true' }} && matrix.target - name: Setup Rust target run: | mkdir -p "${{ env.CARGO_HOME }}" cat << EOF > "${{ env.CARGO_HOME }}"/config.toml [build] target = "${{ matrix.target }}" EOF - if: ${{ steps.cache-cargo.outputs.cache-hit != 'true' }} && matrix.target name: Add lint dependencies run: | cargo install --quiet --version 1.0.9 --target "${{ matrix.target }}" cargo-sort RUSTFLAGS="" cargo install --locked --target "${{ matrix.target }}" --git https://github.com/dcchut/cargo-derivefmt --rev 2ff93de7fb418180458dd1ba27e5655607c23ab6 --bin cargo-derivefmt - name: rustfmt if: success() || failure() run: | cargo fmt --check --all - name: clippy if: success() || failure() run: | cargo clippy --no-deps --all-features --all --tests --examples --benches --bins - name: cargo-derivefmt melib if: success() || failure() run: | cargo derivefmt --manifest-path ./melib/Cargo.toml - name: cargo-derivefmt meli if: success() || failure() run: | cargo derivefmt --manifest-path ./meli/Cargo.toml - name: cargo-derivefmt fuzz if: success() || failure() run: | cargo derivefmt --manifest-path ./fuzz/Cargo.toml - name: cargo-derivefmt tools if: success() || failure() run: | cargo derivefmt --manifest-path ./tools/Cargo.toml