diff --git a/.github/actions-rs/grcov.yml b/.github/actions-rs/grcov.yml new file mode 100644 index 0000000..7b4157b --- /dev/null +++ b/.github/actions-rs/grcov.yml @@ -0,0 +1,3 @@ +--- +output-type: lcov +output-file: ./lcov.info diff --git a/.github/workflows/.codespellrc b/.github/workflows/.codespellrc new file mode 100644 index 0000000..8511d3f --- /dev/null +++ b/.github/workflows/.codespellrc @@ -0,0 +1,2 @@ +[codespell] +ignore-words-list = crate diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..ce84276 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,63 @@ +--- +name: Build + +on: + push: + tags: + - '*' + workflow_dispatch: + +permissions: + contents: write + +jobs: + test: + uses: ./.github/workflows/test.yml + + build: + name: Test build + runs-on: ${{ matrix.os }} + needs: test + + strategy: + matrix: + include: + - build: linux + os: ubuntu-latest + target: x86_64-unknown-linux-musl + + - build: macos + os: macos-latest + target: x86_64-apple-darwin + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Get the release version from the tag + run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Build + run: | + cargo build --release --target ${{ matrix.target }} + + publish: + name: Publish + runs-on: ubuntu-latest + needs: + - build + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - run: cargo publish --token ${CRATES_TOKEN} + env: + CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index a3915d7..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: ci - -on: [push] - -env: - CARGO_TERM_COLOR: always - -jobs: - check: - name: Check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - uses: actions-rs/cargo@v1 - with: - command: check - - test: - name: Test Suite - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - uses: actions-rs/cargo@v1 - with: - command: test - - fmt: - name: Rustfmt - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - run: rustup component add rustfmt - - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --all -- --check - - clippy: - name: Clippy - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - run: rustup component add clippy - - uses: actions-rs/cargo@v1 - with: - command: clippy - args: -- -D clippy::all -D clippy::nursery -D warnings diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..fbd5d59 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,85 @@ +--- +name: Test + +on: + workflow_call: + pull_request: + branches: + - '*' + +jobs: + format: + name: Format + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + + - name: Format + run: cargo fmt --all -- --check + + lint: + name: Clippy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + + - name: Clippy + run: cargo clippy -- -D clippy::all -D clippy::nursery -D warnings + + check: + name: Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + + - name: Check + run: cargo check + + test: + name: Test + strategy: + matrix: + os: + - ubuntu-latest + - macOS-latest + rust: + - stable + runs-on: ${{ matrix.os }} + needs: + - format + - lint + - check + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + + - name: test + run: cargo test + + coverage: + name: Coverage + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + + - name: Run tests + run: cargo test --verbose + env: + CARGO_INCREMENTAL: '0' + RUSTFLAGS: -Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code + -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests + RUSTDOCFLAGS: -Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code + -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests + + - name: rust-grcov + uses: actions-rs/grcov@v0.1 + + - name: Upload to codecov.io + uses: codecov/codecov-action@v3 + + - name: Coveralls GitHub Action + uses: coverallsapp/github-action@v2 diff --git a/Cargo.toml b/Cargo.toml index e91ecbb..7d9414a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fork" -version = "0.1.22" +version = "0.1.23" authors = ["Nicolas Embriz "] description = "Library for creating a new process detached from the controlling terminal (daemon)" documentation = "https://docs.rs/fork/latest/fork/" @@ -9,11 +9,8 @@ repository = "https://github.com/immortal/fork" readme = "README.md" keywords = ["fork", "setsid", "daemon", "process", "daemonize"] categories = ["command-line-utilities", "os"] -license = "BSD-3-Clause" -edition = "2018" - -[badges] -travis-ci = { repository = "immortal/fork", branch = "master" } +license-file = "BSD-3-Clause" +edition = "2021" [dependencies] libc = "0.2" diff --git a/README.md b/README.md index 94673c4..1ddc14b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # fork [![crates.io](https://img.shields.io/crates/v/fork.svg)](https://crates.io/crates/fork) -[![Build Status](https://travis-ci.org/immortal/fork.svg?branch=master)](https://travis-ci.org/immortal/fork) +[![Build](https://github.com/immortal/fork/actions/workflows/build.yml/badge.svg)](https://github.com/immortal/fork/actions/workflows/build.yml) +[![codecov](https://codecov.io/gh/immortal/fork/graph/badge.svg?token=LHZW56OC10)](https://codecov.io/gh/immortal/fork) [![docs](https://docs.rs/fork/badge.svg)](https://docs.rs/fork) Library for creating a new process detached from the controlling terminal (daemon).