Files
swift-inotify/.github/workflows/docs.yml
T. R. Bernstein 55f3ca2f7b
Some checks failed
Docs / docs (push) Has been cancelled
Docs / deploy (push) Has been cancelled
Temporary fix of SwiftPM Bug using task.sh
SwiftPM has currently a bug, that products or targets of dependencies
are taken into consideration when resolving names, regardless if they're
used or not by the root package. This stops Swift PM from working on packages,
that declare this package as a dependency and define their own TaskCLI target,
as they collide with the definitions of this package. This is resolved, by
prefixing TaskCLI with the package name.
The product collision - which causes swift run - to run this package's task
executable is resolved, by adding that product only temporarily during task
execution using task.sh.

See https://github.com/swiftlang/swift-package-manager/issues/8482
2026-03-20 21:10:01 +01:00

62 lines
1.9 KiB
YAML

name: Docs
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Pages
uses: actions/configure-pages@v5
- name: Set up Swift
uses: swift-actions/setup-swift@v3
with:
skip-verify-signature: true
- name: Generate Docs
run: |
swift package add-dependency --from 1.4.0 "https://github.com/apple/swift-docc-plugin.git"
for target in Inotify InotifyTaskCLI; do
lower="${target,,}"
mkdir -p "./public/$lower"
swift package --allow-writing-to-directory "./public/$lower" \
generate-documentation --disable-indexing --transform-for-static-hosting \
--target "$target" \
--hosting-base-path "swift-inotify/$lower" \
--output-path "./public/$lower"
done
- name: Copy Index Page
run: |
cp ./.github/workflows/index.tpl.html public/index.html
sed -i -e 's/{{project.name}}/Swift Inotify/g' public/index.html
sed -i -e 's/{{project.tagline}}/🗂️ Monitor filesystem events on Linux using modern Swift concurrency/g' public/index.html
sed -i -e 's|{{project.links}}|<li><a href="inotify/documentation/inotify/">Inotify</a>: The actual library.</li><li><a href="inotifytaskcli/documentation/inotifytaskcli/">TaskCLI</a>: The project build command.</li>|g' public/index.html
- name: Upload artifact
uses: actions/upload-pages-artifact@v4
with:
path: ./public
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: docs
steps:
- name: Deploy Docs
uses: actions/deploy-pages@v4