diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2fb4807..190cd2ad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,10 @@ on: branches: - '*' +concurrency: + group: docs-${{ github.ref }} + cancel-in-progress: true + jobs: build: name: MacOS diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml new file mode 100644 index 00000000..928399d5 --- /dev/null +++ b/.github/workflows/documentation.yml @@ -0,0 +1,74 @@ +# Build and deploy DocC to GitHub pages. Based off of @karwa's work here: +# https://github.com/karwa/swift-url/blob/main/.github/workflows/docs.yml +name: Documentation + +on: + release: + types: + - published + push: + branches: + - main + workflow_dispatch: + +concurrency: + group: docs-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: macos-12 + steps: + - name: Select Xcode 14.1 + run: sudo xcode-select -s /Applications/Xcode_14.1.app + + - name: Checkout Package + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Checkout gh-pages Branch + uses: actions/checkout@v3 + with: + ref: gh-pages + path: docs-out + + - name: Build documentation + run: > + rm -rf docs-out/.git; + rm -rf docs-out/main; + git tag -l --sort=-v:refname | grep -e "\d\+\.\d\+.0" | tail -n +6 | xargs -I {} rm -rf {}; + + for tag in $(echo "main"; git tag -l --sort=-v:refname | grep -e "\d\+\.\d\+.0" | head -6); + do + if [ -d "docs-out/$tag/data/documentation/xctestdynamicoverlay" ] + then + echo "✅ Documentation for "$tag" already exists."; + else + echo "⏳ Generating documentation for XCTestDynamicOverlay @ "$tag" release."; + rm -rf "docs-out/$tag"; + + git checkout .; + git checkout "$tag"; + + swift package \ + --allow-writing-to-directory docs-out/"$tag" \ + generate-documentation \ + --target XCTestDynamicOverlay \ + --output-path docs-out/"$tag" \ + --transform-for-static-hosting \ + --hosting-base-path /xctest-dynamic-overlay/"$tag" \ + && echo "✅ Documentation generated for XCTestDynamicOverlay @ "$tag" release." \ + || echo "⚠️ Documentation skipped for XCTestDynamicOverlay @ "$tag"."; + fi; + done + + - name: Fix permissions + run: 'sudo chown -R $USER docs-out' + + - name: Publish documentation to GitHub Pages + uses: JamesIves/github-pages-deploy-action@4.1.7 + with: + branch: gh-pages + folder: docs-out + single-commit: true diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index dc82144b..17bd5ec1 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -5,6 +5,10 @@ on: branches: - main +concurrency: + group: docs-${{ github.ref }} + cancel-in-progress: true + jobs: swift_format: name: swift-format diff --git a/README.md b/README.md index 4742d71e..9af6d883 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,12 @@ extension AppDependencies { The above `placeholder` parameters can be left off, but will fatal error when the endpoint is called. +## Documentation + +Full documentation can be found [here][docs]. + ## License This library is released under the MIT license. See [LICENSE](LICENSE) for details. + +[docs]: https://pointfreeco.github.io/xctest-dynamic-overlay/main/documentation/xctestdynamicoverlay