docs: Add documentation based on the youtube video (#10)
This commit is contained in:
parent
deb9fd3f46
commit
bfee1175f6
8 changed files with 105 additions and 12 deletions
23
.github/DOCS.md
vendored
Normal file
23
.github/DOCS.md
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Github config and workflows
|
||||||
|
|
||||||
|
In this folder there is configuration for codecoverage, dependabot, and ci
|
||||||
|
workflows that check the library more deeply than the default configurations.
|
||||||
|
|
||||||
|
This folder can be or was merged using a --allow-unrelated-histories merge
|
||||||
|
strategy from <https://github.com/jonhoo/rust-ci-conf/> which provides a
|
||||||
|
reasonably sensible base for writing your own ci on. By using this strategy
|
||||||
|
the history of the CI repo is included in your repo, and future updates to
|
||||||
|
the CI can be merged later.
|
||||||
|
|
||||||
|
To perform this merge run:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git remote add ci https://github.com/jonhoo/rust-ci-conf.git
|
||||||
|
git fetch ci
|
||||||
|
git merge --allow-unrelated-histories ci/main
|
||||||
|
```
|
||||||
|
|
||||||
|
An overview of the files in this project is available at:
|
||||||
|
<https://www.youtube.com/watch?v=xUH-4y92jPg&t=491s>, which contains some
|
||||||
|
rationale for decisions and runs through an example of solving minimal version
|
||||||
|
and OpenSSL issues.
|
||||||
2
.github/codecov.yml
vendored
2
.github/codecov.yml
vendored
|
|
@ -18,4 +18,4 @@ ignore:
|
||||||
# Make comments less noisy
|
# Make comments less noisy
|
||||||
comment:
|
comment:
|
||||||
layout: "files"
|
layout: "files"
|
||||||
require_changes: yes
|
require_changes: true
|
||||||
|
|
|
||||||
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
|
|
@ -10,8 +10,10 @@ updates:
|
||||||
interval: daily
|
interval: daily
|
||||||
ignore:
|
ignore:
|
||||||
- dependency-name: "*"
|
- dependency-name: "*"
|
||||||
# patch and minor updates don't matter for libraries
|
# patch and minor updates don't matter for libraries as consumers of this library build
|
||||||
# remove this ignore rule if your package has binaries
|
# with their own lockfile, rather than the version specified in this library's lockfile
|
||||||
|
# remove this ignore rule if your package has binaries to ensure that the binaries are
|
||||||
|
# built with the exact set of dependencies and those are up to date.
|
||||||
update-types:
|
update-types:
|
||||||
- "version-update:semver-patch"
|
- "version-update:semver-patch"
|
||||||
- "version-update:semver-minor"
|
- "version-update:semver-minor"
|
||||||
|
|
|
||||||
21
.github/workflows/check.yml
vendored
21
.github/workflows/check.yml
vendored
|
|
@ -1,10 +1,21 @@
|
||||||
|
# This workflow runs whenever a PR is opened or updated, or a commit is pushed to main. It runs
|
||||||
|
# several checks:
|
||||||
|
# - fmt: checks that the code is formatted according to rustfmt
|
||||||
|
# - clippy: checks that the code does not contain any clippy warnings
|
||||||
|
# - doc: checks that the code can be documented without errors
|
||||||
|
# - hack: check combinations of feature flags
|
||||||
|
# - msrv: check that the msrv specified in the crate is correct
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
# This configuration allows maintainers of this repo to create a branch and pull request based on
|
||||||
|
# the new branch. Restricting the push trigger to the main branch ensures that the PR only gets
|
||||||
|
# built once.
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
pull_request:
|
pull_request:
|
||||||
# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5
|
# If new code is pushed to a PR branch, then cancel in progress workflows for that PR. Ensures that
|
||||||
|
# we don't waste CI time, and returns results quicker https://github.com/jonhoo/rust-ci-conf/pull/5
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
@ -32,6 +43,7 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
|
# Get early warning of new lints which are regularly introduced in beta channels.
|
||||||
toolchain: [stable, beta]
|
toolchain: [stable, beta]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
@ -47,6 +59,9 @@ jobs:
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
doc:
|
doc:
|
||||||
|
# run docs generation on nightly rather than stable. This enables features like
|
||||||
|
# https://doc.rust-lang.org/beta/unstable-book/language-features/doc-cfg.html which allows an
|
||||||
|
# API be documented as only available in some specific platforms.
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: nightly / doc
|
name: nightly / doc
|
||||||
steps:
|
steps:
|
||||||
|
|
@ -60,6 +75,8 @@ jobs:
|
||||||
env:
|
env:
|
||||||
RUSTDOCFLAGS: --cfg docsrs
|
RUSTDOCFLAGS: --cfg docsrs
|
||||||
hack:
|
hack:
|
||||||
|
# cargo-hack checks combinations of feature flags to ensure that features are all additive
|
||||||
|
# which is required for feature unification
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: ubuntu / stable / features
|
name: ubuntu / stable / features
|
||||||
steps:
|
steps:
|
||||||
|
|
@ -71,9 +88,11 @@ jobs:
|
||||||
- name: cargo install cargo-hack
|
- name: cargo install cargo-hack
|
||||||
uses: taiki-e/install-action@cargo-hack
|
uses: taiki-e/install-action@cargo-hack
|
||||||
# intentionally no target specifier; see https://github.com/jonhoo/rust-ci-conf/pull/4
|
# intentionally no target specifier; see https://github.com/jonhoo/rust-ci-conf/pull/4
|
||||||
|
# --feature-powerset runs for every combination of features
|
||||||
- name: cargo hack
|
- name: cargo hack
|
||||||
run: cargo hack --feature-powerset check
|
run: cargo hack --feature-powerset check
|
||||||
msrv:
|
msrv:
|
||||||
|
# check that we can build using the minimal rust version that is specified by this crate
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# we use a matrix here just because env can't be used in job names
|
# we use a matrix here just because env can't be used in job names
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
|
# https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
|
||||||
|
|
|
||||||
4
.github/workflows/nostd.yml
vendored
4
.github/workflows/nostd.yml
vendored
|
|
@ -1,10 +1,12 @@
|
||||||
|
# This workflow checks whether the library is able to run without the std library (e.g., embedded).
|
||||||
|
# This entire file should be removed if this crate does not support no-std. See check.yml for
|
||||||
|
# information about how the concurrency cancelation and workflow triggering works
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
pull_request:
|
pull_request:
|
||||||
# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
|
||||||
8
.github/workflows/safety.yml
vendored
8
.github/workflows/safety.yml
vendored
|
|
@ -1,10 +1,16 @@
|
||||||
|
# This workflow runs checks for unsafe code. In crates that don't have any unsafe code, this can be
|
||||||
|
# removed. Runs:
|
||||||
|
# - miri - detects undefined behavior and memory leaks
|
||||||
|
# - address santizer - detects memory errors
|
||||||
|
# - leak sanitizer - detects memory leaks
|
||||||
|
# - loom - Permutation testing for concurrent code https://crates.io/crates/loom
|
||||||
|
# See check.yml for information about how the concurrency cancelation and workflow triggering works
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
pull_request:
|
pull_request:
|
||||||
# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
|
||||||
16
.github/workflows/scheduled.yml
vendored
16
.github/workflows/scheduled.yml
vendored
|
|
@ -1,3 +1,6 @@
|
||||||
|
# Run scheduled (rolling) jobs on a nightly basis, as your crate may break independently of any
|
||||||
|
# given PR. E.g., updates to rust nightly and updates to this crates dependencies. See check.yml for
|
||||||
|
# information about how the concurrency cancelation and workflow triggering works
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
on:
|
on:
|
||||||
|
|
@ -6,7 +9,6 @@ on:
|
||||||
pull_request:
|
pull_request:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '7 7 * * *'
|
- cron: '7 7 * * *'
|
||||||
# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
@ -29,12 +31,16 @@ jobs:
|
||||||
run: cargo test --locked --all-features --all-targets
|
run: cargo test --locked --all-features --all-targets
|
||||||
# https://twitter.com/alcuadrado/status/1571291687837732873
|
# https://twitter.com/alcuadrado/status/1571291687837732873
|
||||||
update:
|
update:
|
||||||
|
# This action checks that updating the dependencies of this crate to the latest available that
|
||||||
|
# satisfy the versions in Cargo.toml does not break this crate. This is important as consumers
|
||||||
|
# of this crate will generally use the latest available crates. This is subject to the standard
|
||||||
|
# Cargo semver rules (i.e cargo does not update to a new major version unless explicitly told
|
||||||
|
# to).
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: ubuntu / beta / updated
|
name: ubuntu / beta / updated
|
||||||
# There's no point running this if no Cargo.lock was checked in in the
|
# There's no point running this if no Cargo.lock was checked in in the first place, since we'd
|
||||||
# first place, since we'd just redo what happened in the regular test job.
|
# just redo what happened in the regular test job. Unfortunately, hashFiles only works in if on
|
||||||
# Unfortunately, hashFiles only works in if on steps, so we reepeat it.
|
# steps, so we repeat it.
|
||||||
# if: hashFiles('Cargo.lock') != ''
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
|
|
|
||||||
37
.github/workflows/test.yml
vendored
37
.github/workflows/test.yml
vendored
|
|
@ -1,10 +1,17 @@
|
||||||
|
# This is the main CI workflow that runs the test suite on all pushes to main and all pull requests.
|
||||||
|
# It runs the following jobs:
|
||||||
|
# - required: runs the test suite on ubuntu with stable and beta rust toolchains
|
||||||
|
# - minimal: runs the test suite with the minimal versions of the dependencies that satisfy the
|
||||||
|
# requirements of this crate, and its dependencies
|
||||||
|
# - os-check: runs the test suite on mac and windows
|
||||||
|
# - coverage: runs the test suite and collects coverage information
|
||||||
|
# See check.yml for information about how the concurrency cancelation and workflow triggering works
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
pull_request:
|
pull_request:
|
||||||
# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
@ -15,6 +22,8 @@ jobs:
|
||||||
name: ubuntu / ${{ matrix.toolchain }}
|
name: ubuntu / ${{ matrix.toolchain }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
|
# run on stable and beta to ensure that tests won't break on the next version of the rust
|
||||||
|
# toolchain
|
||||||
toolchain: [stable, beta]
|
toolchain: [stable, beta]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
@ -25,6 +34,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
toolchain: ${{ matrix.toolchain }}
|
toolchain: ${{ matrix.toolchain }}
|
||||||
- name: cargo generate-lockfile
|
- name: cargo generate-lockfile
|
||||||
|
# enable this ci template to run regardless of whether the lockfile is checked in or not
|
||||||
if: hashFiles('Cargo.lock') == ''
|
if: hashFiles('Cargo.lock') == ''
|
||||||
run: cargo generate-lockfile
|
run: cargo generate-lockfile
|
||||||
# https://twitter.com/jonhoo/status/1571290371124260865
|
# https://twitter.com/jonhoo/status/1571290371124260865
|
||||||
|
|
@ -34,6 +44,28 @@ jobs:
|
||||||
- name: cargo test --doc
|
- name: cargo test --doc
|
||||||
run: cargo test --locked --all-features --doc
|
run: cargo test --locked --all-features --doc
|
||||||
minimal:
|
minimal:
|
||||||
|
# This action chooses the oldest version of the dependencies permitted by Cargo.toml to ensure
|
||||||
|
# that this crate is compatible with the minimal version that this crate and its dependencies
|
||||||
|
# require. This will pickup issues where this create relies on functionality that was introduced
|
||||||
|
# later than the actual version specified (e.g., when we choose just a major version, but a
|
||||||
|
# method was added after this version).
|
||||||
|
#
|
||||||
|
# This particular check can be difficult to get to succeed as often transitive dependencies may
|
||||||
|
# be incorrectly specified (e.g., a dependency specifies 1.0 but really requires 1.1.5). There
|
||||||
|
# is an alternative flag available -Zminimal-direct that uses the minimal versions for direct
|
||||||
|
# dependencies of this crate, while selecting the maximal versions for the transitive
|
||||||
|
# dependencies. Alternatively, you can add a line in your Cargo.toml to artificially increase
|
||||||
|
# the minimal dependency, which you do with e.g.:
|
||||||
|
# ```toml
|
||||||
|
# # for minimal-versions
|
||||||
|
# [target.'cfg(any())'.dependencies]
|
||||||
|
# openssl = { version = "0.10.55", optional = true } # needed to allow foo to build with -Zminimal-versions
|
||||||
|
# ```
|
||||||
|
# The optional = true is necessary in case that dependency isn't otherwise transitively required
|
||||||
|
# by your library, and the target bit is so that this dependency edge never actually affects
|
||||||
|
# Cargo build order. See also
|
||||||
|
# https://github.com/jonhoo/fantoccini/blob/fde336472b712bc7ebf5b4e772023a7ba71b2262/Cargo.toml#L47-L49.
|
||||||
|
# This action is run on ubuntu with the stable toolchain, as it is not expected to fail
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: ubuntu / stable / minimal-versions
|
name: ubuntu / stable / minimal-versions
|
||||||
steps:
|
steps:
|
||||||
|
|
@ -51,6 +83,7 @@ jobs:
|
||||||
- name: cargo test
|
- name: cargo test
|
||||||
run: cargo test --locked --all-features --all-targets
|
run: cargo test --locked --all-features --all-targets
|
||||||
os-check:
|
os-check:
|
||||||
|
# run cargo test on mac and windows
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
name: ${{ matrix.os }} / stable
|
name: ${{ matrix.os }} / stable
|
||||||
strategy:
|
strategy:
|
||||||
|
|
@ -75,6 +108,8 @@ jobs:
|
||||||
- name: cargo test
|
- name: cargo test
|
||||||
run: cargo test --locked --all-features --all-targets
|
run: cargo test --locked --all-features --all-targets
|
||||||
coverage:
|
coverage:
|
||||||
|
# use llvm-cov to build and collect coverage and outputs in a format that is compatible with
|
||||||
|
# codecov.io
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: ubuntu / stable / coverage
|
name: ubuntu / stable / coverage
|
||||||
steps:
|
steps:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue