diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 0000000..dd7bd25 --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,80 @@ +name: Build and Deploy Documentation + +on: + schedule: + # Run weekly on Sundays at midnight UTC + - cron: "0 0 * * 0" + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Resolve repository and book title + id: resolve + run: | + set -eo pipefail + + REPO_INPUT="${{ github.event.inputs.repo }}" + if [ -n "$REPO_INPUT" ]; then + REPO_VALUE="$REPO_INPUT" + else + REPO_VALUE="${{ github.repository }}" + fi + + TITLE_INPUT="${{ github.event.inputs.book_title }}" + if [ -n "$TITLE_INPUT" ]; then + TITLE_VALUE="$TITLE_INPUT" + else + REPO_NAME="${REPO_VALUE#*/}" + if [ -z "$REPO_NAME" ]; then + TITLE_VALUE="Documentation" + else + TITLE_VALUE="$REPO_NAME Documentation" + fi + fi + + echo "repo_value=$REPO_VALUE" >> "$GITHUB_OUTPUT" + echo "title_value=$TITLE_VALUE" >> "$GITHUB_OUTPUT" + echo "Using repository: $REPO_VALUE" + echo "Using book title: $TITLE_VALUE" + + - name: Prepare output directory + run: | + rm -rf output + mkdir -p output + + - name: Generate DeepWiki docs + uses: jzombie/deepwiki-to-mdbook@main + with: + repo: ${{ steps.resolve.outputs.repo_value }} + book_title: ${{ steps.resolve.outputs.title_value }} + output_dir: ./output + + - name: Upload artifact for Pages + uses: actions/upload-pages-artifact@v3 + with: + path: ./output/book + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/README.md b/README.md index 83dd1ba..3d2b484 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ made-with-rust crates.io Documentation + license