Skip to content

Swap macro re-export modules (#405) #1021

Swap macro re-export modules (#405)

Swap macro re-export modules (#405) #1021

Workflow file for this run

name: CI
on:
push:
branches: ["master"]
tags: ["v*"]
pull_request:
branches: ["master"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUST_BACKTRACE: 1
jobs:
##########################
# Linting and formatting #
##########################
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
components: clippy
- run: cargo clippy --workspace --all-features --all-targets -- -D warnings
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
components: rustfmt
- run: cargo +nightly fmt --all -- --check
###########
# Testing #
###########
msrv:
name: MSRV
strategy:
fail-fast: false
matrix:
msrv: ["1.75.0"]
os:
- ubuntu
- macOS
- windows
runs-on: ${{ matrix.os }}-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: ${{ matrix.msrv }}
- name: Install minimal dependencies versions
run: cargo +nightly update -Z minimal-versions
- run: cargo test --workspace --features full,testing-helpers
-- --skip compile_fail
no_std:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
- name: Install cargo nono
run: curl -LSfs https://japaric.github.io/trust/install.sh
| sh -s -- --git hobofan/cargo-nono
--tag $(curl -s https://api.github.com/repos/hobofan/cargo-nono/releases/latest
| jq -r '.tag_name')
# TODO: Remove the latest Git tag detection above once this PR is merged:
# https://github.com/japaric/trust/pull/137
- run: cargo nono check --package derive_more
--no-default-features --features full
test:
strategy:
fail-fast: false
matrix:
os:
- ubuntu
- macOS
- windows
toolchain:
- stable
- nightly
runs-on: ${{ matrix.os }}-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
- run: cargo test --workspace --features full,testing-helpers
test-features:
name: test features
strategy:
fail-fast: false
matrix:
std: ["std", "no_std"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
- name: Install tomljson
run: |
go install github.com/pelletier/go-toml/cmd/tomljson@latest
echo "$HOME/go/bin" >> $GITHUB_PATH
- run: ci/test_all_features.sh ${{ matrix.std }}
#################
# Documentation #
#################
rustdoc:
name: rustdoc${{ matrix.opts != '' && ' (private)' || '' }}
strategy:
fail-fast: false
matrix:
opts: ["", "--document-private-items"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
- run: cargo +nightly doc -p derive_more-impl --features full ${{ matrix.opts }}
env:
RUSTDOCFLAGS: --cfg docsrs --cfg ci
- run: cargo +nightly doc -p derive_more --features full ${{ matrix.opts }}
env:
RUSTDOCFLAGS: --cfg docsrs --cfg ci
#############
# Releasing #
#############
release-github:
name: release (GitHub)
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
needs:
- clippy
- msrv
- no_std
- rustdoc
- rustfmt
- test
- test-features
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Parse release version
id: release
run: echo "version=${GITHUB_REF#refs/tags/v}"
>> $GITHUB_OUTPUT
- name: Verify release version matches `derive_more` Cargo manifest
run: |
test "${{ steps.release.outputs.version }}" \
== "$(grep -m1 'version = "' Cargo.toml | cut -d '"' -f2)"
- name: Parse CHANGELOG link
id: changelog
run: echo "link=${{ github.server_url }}/${{ github.repository }}/blob/v${{ steps.release.outputs.version }}/CHANGELOG.md#$(sed -n '/^## ${{ steps.release.outputs.version }}/{s/^## \([^ ]*\) - \([0-9].*\)/\1---\2/;s/[^0-9a-z-]*//g;p;}' CHANGELOG.md)"
>> $GITHUB_OUTPUT
- uses: softprops/action-gh-release@v2
with:
name: ${{ steps.release.outputs.version }}
body: |
[API docs](https://docs.rs/derive_more/${{ steps.release.outputs.version }})
[Changelog](${{ steps.changelog.outputs.link }})
prerelease: ${{ contains(steps.release.outputs.version, '-') }}