mirror of
https://github.com/seemueller-io/hyper-custom-cert.git
synced 2025-09-08 22:46:45 +00:00
Add new GitHub Actions workflows for documentation
This commit is contained in:
135
.github/workflows/docs.yml
vendored
Normal file
135
.github/workflows/docs.yml
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
name: Documentation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'crates/hyper-custom-cert/src/**'
|
||||
- 'crates/hyper-custom-cert/README.md'
|
||||
- 'README.md'
|
||||
- 'crates/hyper-custom-cert/Cargo.toml'
|
||||
- '.github/workflows/docs.yml'
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'crates/hyper-custom-cert/src/**'
|
||||
- 'crates/hyper-custom-cert/README.md'
|
||||
- 'README.md'
|
||||
- 'crates/hyper-custom-cert/Cargo.toml'
|
||||
- '.github/workflows/docs.yml'
|
||||
|
||||
jobs:
|
||||
docs:
|
||||
name: Build and validate documentation
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: crates/hyper-custom-cert
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- name: default-features
|
||||
features: ""
|
||||
no-default-features: false
|
||||
- name: no-default-features
|
||||
features: ""
|
||||
no-default-features: true
|
||||
- name: rustls
|
||||
features: "rustls"
|
||||
no-default-features: true
|
||||
- name: insecure-dangerous
|
||||
features: "insecure-dangerous"
|
||||
no-default-features: false
|
||||
- name: all-features
|
||||
features: "rustls,insecure-dangerous"
|
||||
no-default-features: true
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Build documentation
|
||||
shell: bash
|
||||
run: |
|
||||
FLAGS=""
|
||||
if [ "${{ matrix.no-default-features }}" = "true" ]; then FLAGS="$FLAGS --no-default-features"; fi
|
||||
if [ -n "${{ matrix.features }}" ]; then FLAGS="$FLAGS --features ${{ matrix.features }}"; fi
|
||||
echo "Running: cargo doc $FLAGS --no-deps"
|
||||
cargo doc $FLAGS --no-deps
|
||||
|
||||
- name: Check documentation warnings
|
||||
shell: bash
|
||||
run: |
|
||||
FLAGS=""
|
||||
if [ "${{ matrix.no-default-features }}" = "true" ]; then FLAGS="$FLAGS --no-default-features"; fi
|
||||
if [ -n "${{ matrix.features }}" ]; then FLAGS="$FLAGS --features ${{ matrix.features }}"; fi
|
||||
echo "Running: cargo doc $FLAGS --no-deps"
|
||||
RUSTDOCFLAGS="-D warnings" cargo doc $FLAGS --no-deps
|
||||
|
||||
- name: Test documentation examples
|
||||
shell: bash
|
||||
run: |
|
||||
FLAGS=""
|
||||
if [ "${{ matrix.no-default-features }}" = "true" ]; then FLAGS="$FLAGS --no-default-features"; fi
|
||||
if [ -n "${{ matrix.features }}" ]; then FLAGS="$FLAGS --features ${{ matrix.features }}"; fi
|
||||
echo "Running: cargo test --doc $FLAGS"
|
||||
cargo test --doc $FLAGS
|
||||
|
||||
readme-sync:
|
||||
name: Check README synchronization
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install cargo-readme
|
||||
run: cargo install cargo-readme
|
||||
|
||||
- name: Check README is up to date
|
||||
working-directory: crates/hyper-custom-cert
|
||||
run: |
|
||||
# Generate README from lib.rs documentation
|
||||
cargo readme > README_generated.md
|
||||
|
||||
# Compare with existing README
|
||||
if ! diff -u README.md README_generated.md; then
|
||||
echo "ERROR: README.md is not synchronized with lib.rs documentation"
|
||||
echo "Run 'cargo readme > README.md' in crates/hyper-custom-cert/ to update"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clean up
|
||||
rm README_generated.md
|
||||
|
||||
link-check:
|
||||
name: Check documentation links
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Build documentation
|
||||
working-directory: crates/hyper-custom-cert
|
||||
run: cargo doc --all-features --no-deps
|
||||
|
||||
- name: Install lychee
|
||||
run: |
|
||||
curl -sSL https://github.com/lycheeverse/lychee/releases/latest/download/lychee-x86_64-unknown-linux-gnu.tar.gz | tar xz
|
||||
sudo mv lychee /usr/local/bin/
|
||||
|
||||
- name: Check links in documentation
|
||||
run: |
|
||||
# Check links in generated documentation
|
||||
lychee 'crates/hyper-custom-cert/target/doc/**/*.html' --exclude-path target --base crates/hyper-custom-cert/target/doc
|
||||
|
||||
# Check links in README files
|
||||
lychee README.md crates/hyper-custom-cert/README.md
|
Reference in New Issue
Block a user