Replace manpage build with multi-language mdbook docs in CI #402
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Docs | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| schedule: | |
| - cron: "0 2 * * *" | |
| jobs: | |
| build: | |
| name: Build website artifacts | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout uutils.github.io Repository | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: uutils/uutils.github.io | |
| path: './uutils.github.io' | |
| fetch-depth: 0 | |
| - name: Checkout Coreutils Repository | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: uutils/coreutils | |
| path: './coreutils' | |
| fetch-depth: 0 | |
| - name: Checkout Coreutils L10n Repository | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: uutils/coreutils-l10n | |
| path: './coreutils-l10n' | |
| fetch-depth: 0 | |
| - name: Checkout Findutils Repository | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: uutils/findutils | |
| path: './findutils' | |
| fetch-depth: 0 | |
| - name: Install `rust` toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install system deps | |
| run: | | |
| sudo apt install libacl1-dev libselinux1-dev libsystemd-dev | |
| - name: Install necessary tools (mdbook and mdbook-toc) | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: mdbook,mdbook-toc | |
| - name: Copy l10n locales into coreutils | |
| run: | | |
| # Only copy locales into utilities that already exist in coreutils | |
| for util_dir in coreutils-l10n/src/uu/*/; do | |
| util=$(basename "$util_dir") | |
| if [ -d "coreutils/src/uu/$util" ]; then | |
| cp -r "$util_dir/locales" "coreutils/src/uu/$util/" 2>/dev/null || true | |
| fi | |
| done | |
| cp -r coreutils-l10n/src/uucore/* coreutils/src/uucore/ 2>/dev/null || true | |
| - name: Patch mdbook theme with language selector | |
| run: | | |
| uutils.github.io/scripts/patch-mdbook-theme.sh coreutils/docs | |
| - name: Build Coreutils Docs | |
| run: | | |
| cd coreutils | |
| # Download and repack tldr zip: uudoc expects pages/common/ prefix | |
| curl -sfL https://github.com/tldr-pages/tldr/releases/download/v2.3/tldr-pages.zip -o /tmp/tldr-raw.zip || true | |
| if [ -f /tmp/tldr-raw.zip ]; then | |
| mkdir -p /tmp/tldr-repack/pages | |
| cd /tmp/tldr-repack && unzip -o /tmp/tldr-raw.zip -d pages/ > /dev/null | |
| zip -r "$OLDPWD/docs/tldr.zip" pages/ > /dev/null | |
| cd "$OLDPWD" | |
| fi | |
| cargo run --bin uudoc --all-features | |
| cd docs | |
| # Remove deprecated 'multilingual' field unsupported by newer mdbook | |
| sed -i '/^multilingual/d' book.toml | |
| mdbook build | |
| - name: Build Coreutils Docs (translations) | |
| run: | | |
| uutils.github.io/scripts/build-docs-l10n.sh coreutils | |
| - name: Build Findutils Docs | |
| run: | | |
| cd findutils/docs | |
| # Remove deprecated 'multilingual' field unsupported by newer mdbook | |
| sed -i '/^multilingual/d' book.toml | |
| mdbook build | |
| - name: Run Zola | |
| uses: shalzz/zola-deploy-action@v0.21.0 | |
| env: | |
| BUILD_DIR: uutils.github.io | |
| BUILD_ONLY: true | |
| - name: Collect results into `public` folder | |
| run: | | |
| cp -r uutils.github.io/public public | |
| cp -r coreutils/docs/book public/coreutils/docs | |
| cp -r findutils/docs/book public/findutils/docs | |
| # Copy translated docs to /coreutils/docs-{lang}/ | |
| for lang_dir in coreutils/docs/book-*/; do | |
| [ -d "$lang_dir" ] || continue | |
| lang=$(basename "$lang_dir" | sed 's/^book-//') | |
| cp -r "$lang_dir" "public/coreutils/docs-${lang}" | |
| done | |
| - name: Upload artifact for checking the output | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| path: ./public | |
| - name: Upload artifact for pages | |
| uses: actions/upload-pages-artifact@v4 | |
| with: | |
| path: ./public | |
| # dev-docs: | |
| # name: generate the dev doc | |
| # runs-on: ubuntu-latest | |
| # steps: | |
| # - name: Checkout repository | |
| # uses: actions/checkout@v4 | |
| # with: | |
| # repository: uutils/coreutils | |
| # path: './coreutils' | |
| # fetch-depth: 0 | |
| # - name: Install `rust` toolchain | |
| # uses: actions-rs/toolchain@v1 | |
| # with: | |
| # toolchain: stable | |
| # default: true | |
| # profile: minimal | |
| # - name: Build dev documentation | |
| # run: | | |
| # cd coreutils | |
| # cargo doc --no-deps --all-features --workspace | |
| # - name: Deploy Docs | |
| # uses: peaceiris/actions-gh-pages@v3 | |
| # with: | |
| # github_token: ${{ secrets.GITHUB_TOKEN }} | |
| # publish_dir: ./coreutils/target/doc | |
| # destination_dir: coreutils/dev/ | |
| # build-report: | |
| # name: generate the build report | |
| # runs-on: ubuntu-latest | |
| # steps: | |
| # - name: Checkout repository | |
| # uses: actions/checkout@v4 | |
| # with: | |
| # repository: uutils/coreutils | |
| # path: './coreutils' | |
| # fetch-depth: 0 | |
| # - name: Install `rust` toolchain | |
| # uses: actions-rs/toolchain@v1 | |
| # with: | |
| # toolchain: nightly | |
| # default: true | |
| # profile: minimal | |
| # - name: Build report | |
| # run: | | |
| # cd coreutils | |
| # cargo +nightly build --timings=html -Zunstable-options | |
| # - name: Deploy build report | |
| # uses: peaceiris/actions-gh-pages@v3 | |
| # with: | |
| # github_token: ${{ secrets.GITHUB_TOKEN }} | |
| # publish_dir: ./coreutils/target/cargo-timings/ | |
| # destination_dir: cargo-timings/ | |
| # Deployment job | |
| deploy: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-latest | |
| needs: build | |
| if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |