mirror of
https://github.com/uutils/shadow.git
synced 2026-06-10 16:14:57 -07:00
896a4214b6
Fixes #79 — CODE_OF_CONDUCT.md (Contributor Covenant 2.1) Fixes #80 — locales/en-US.ftl for all 14 tools Fixes #81 — rust-version = "1.85.0" in workspace Fixes #82 — edition 2024 (resolver 3, unsafe extern blocks) Fixes #83 — GitHub Actions CI (fmt, clippy, test, cargo-deny) Fixes #84 — .clippy.toml with MSRV and quality thresholds Fixes #85 — deny.toml tightened (multiple-versions=deny) Fixes #87 — panic=abort, codegen-units=1 in release profile Fixes #89 — Makefile with install/uninstall/clean targets Fixes #90 — workspace lints: cargo group, unused_qualifications Key policy changes enforced by cargo: - unsafe_code = "deny" workspace-wide. Only pam.rs and crypt.rs have #[allow(unsafe_code)] (C FFI boundaries). - dead_code = "deny" workspace-wide. No unused code allowed. - Edition 2024: set_var/remove_var are unsafe, so sanitize_env returns a Vec instead of mutating. Signal handler removed (was unsafe). localtime_r replaced with pure Rust calendar math. 456 tests, zero clippy warnings.
50 lines
1.2 KiB
YAML
50 lines
1.2 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
fmt:
|
|
name: Format
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: rustfmt
|
|
- run: cargo fmt --all --check
|
|
|
|
clippy:
|
|
name: Clippy
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: clippy
|
|
- uses: Swatinem/rust-cache@v2
|
|
- run: sudo apt-get update && sudo apt-get install -y libpam0g-dev libselinux1-dev libaudit-dev pkg-config libcrypt-dev
|
|
- run: cargo clippy --workspace --all-targets -- -D warnings
|
|
|
|
test:
|
|
name: Test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
- uses: Swatinem/rust-cache@v2
|
|
- run: sudo apt-get update && sudo apt-get install -y libpam0g-dev libselinux1-dev libaudit-dev pkg-config libcrypt-dev
|
|
- run: cargo test --workspace
|
|
|
|
deny:
|
|
name: Cargo Deny
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: EmbarkStudios/cargo-deny-action@v1
|