Skip to content

Commit

Permalink
Build improvements (#125)
Browse files Browse the repository at this point in the history
* build(rust): update to edition 2021

* ci(rust): improve

Use action to install rust toolchain which also does some
workarounds / enables color.

Dont use old unmaintained action-rs actions, use in manually.
Downside: warnings get lost → deny everything and get a hard error.

With ring 0.17 out test platforms like risc-v or arm64 on windows.

* build(clippy): enable pedantic lints from code

When this is forgotten locally only the CI will notice this.
Now these lints are always performed with clippy.

Also cleanup the list of allowed lints and add future ones from
the nursery which could also already be implemented.
  • Loading branch information
EdJoPaTo authored Dec 3, 2023
1 parent ac7169a commit 154f1c5
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 51 deletions.
78 changes: 37 additions & 41 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,25 @@ on:
# Check if it works with current dependencies
- cron: "32 2 * * 3" # weekly on Wednesday 2:32 UTC

env:
RUSTFLAGS: --deny warnings

jobs:
rustfmt:
runs-on: ubuntu-latest
steps:
- name: Setup Rust
shell: bash -eux {0}
run: |
rm ~/.cargo/bin/{rustfmt,cargo-fmt}
rustup toolchain install stable --profile minimal --component rustfmt
rustup default stable
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt
- uses: actions/checkout@v4
- run: cargo fmt --check --verbose

test:
name: Test ${{ matrix.toolchain }} ${{ matrix.os }} ${{ matrix.features }}
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.toolchain == 'nightly' }}
continue-on-error: ${{ (matrix.toolchain == 'beta') || (matrix.toolchain == 'nightly') }}
strategy:
fail-fast: false
matrix:
Expand All @@ -35,7 +37,7 @@ jobs:
- macos-latest
- windows-latest
clippyargs:
- -D clippy::pedantic -D warnings
- -D clippy::pedantic
features:
- --no-default-features
- "" # default features
Expand All @@ -45,43 +47,34 @@ jobs:
- toolchain: beta
os: ubuntu-latest
features: --all-features
clippyargs: -W clippy::pedantic -W clippy::cargo
clippyargs: -D clippy::pedantic
- toolchain: nightly
os: ubuntu-latest
features: --all-features
clippyargs: -W clippy::pedantic
clippyargs: -D clippy::pedantic
steps:
- name: Setup Rust
shell: bash -eux {0}
run: |
rustup toolchain install ${{ matrix.toolchain }} --profile minimal --component clippy
rustup default ${{ matrix.toolchain }}
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
components: clippy

- uses: actions/checkout@v4

- name: Fetch dependencies
uses: actions-rs/cargo@v1
with:
command: fetch
args: --verbose
run: cargo fetch --verbose

- name: Check clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --verbose --all-targets ${{ matrix.features }} -- ${{ matrix.clippyargs }}
run: cargo clippy --verbose --all-targets ${{ matrix.features }} -- ${{ matrix.clippyargs }}

- name: Check docs
uses: actions-rs/cargo@v1
with:
command: doc
args: --verbose --no-deps ${{ matrix.features }}
run: cargo doc --verbose --no-deps ${{ matrix.features }}

- name: Build
run: cargo build --verbose --all-targets ${{ matrix.features }}

- name: Run tests
uses: actions-rs/cargo@v1
with:
command: test
args: --verbose ${{ matrix.features }}
run: cargo test --verbose ${{ matrix.features }}

release:
name: Release ${{ matrix.triple }}
Expand All @@ -99,6 +92,8 @@ jobs:
os: ubuntu-latest
- triple: arm-unknown-linux-gnueabihf
os: ubuntu-latest
- triple: riscv64gc-unknown-linux-gnu
os: ubuntu-latest

- triple: x86_64-apple-darwin
os: macos-latest
Expand All @@ -107,24 +102,25 @@ jobs:

- triple: x86_64-pc-windows-msvc
os: windows-latest
# https://github.com/briansmith/ring/issues/1167
# - triple: aarch64-pc-windows-msvc
# os: windows-latest
- triple: aarch64-pc-windows-msvc
os: windows-latest
steps:
- name: Setup Rust
shell: bash -eux {0}
run: |
rustup toolchain install stable --profile minimal --target ${{ matrix.triple }}
rustup default stable
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: ${{ matrix.triple }}

- name: Install cargo tools
if: runner.os == 'Linux'
uses: taiki-e/install-action@v2
with:
tool: cross

- uses: actions/checkout@v4

- name: Fetch dependencies
run: cargo fetch --verbose

- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --verbose --all-features --target ${{ matrix.triple }}
use-cross: ${{ runner.os == 'Linux' }}
run: ${{ runner.os == 'Linux' && 'cross' || 'cargo' }} build --release --verbose --target ${{ matrix.triple }}
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "frankenstein"
version = "0.29.1"
authors = ["Ayrat Badykov <[email protected]>", "Pepe Márquez <[email protected]>"]
description = "Telegram bot API client for Rust"
edition = "2018"
edition = "2021"
license = "WTFPL"
repository = "https://github.com/ayrat555/frankenstein"
readme = "README.md"
Expand Down
17 changes: 8 additions & 9 deletions src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
#![forbid(unsafe_code)]
#![warn(clippy::pedantic)]
// TODO: remove and fix (or allow explicitly on the specific problem)
#![allow(
clippy::large_enum_variant,
clippy::missing_const_for_fn,
clippy::missing_errors_doc,
clippy::module_name_repetitions,
clippy::must_use_candidate,
clippy::needless_collect,
clippy::new_without_default,
clippy::non_ascii_literal,
clippy::single_match_else,
clippy::struct_excessive_bools,
clippy::too_many_arguments,
clippy::unreadable_literal,
clippy::use_self,
clippy::wildcard_imports
// from clippy::nursery
// clippy::derive_partial_eq_without_eq,
// clippy::option_if_let_else,
// clippy::significant_drop_tightening,
// clippy::use_self,
)]

#[cfg(any(feature = "http-client", feature = "async-http-client"))]
Expand Down

0 comments on commit 154f1c5

Please sign in to comment.