name: Tiny Docs (Reusable) on: workflow_call: inputs: tiny_docs_repo: description: "Owner/Repo of your tiny-docs source" required: false type: string default: flo-bit/tiny-docs site: description: "Docs site domain (default: https://.github.io)" required: false type: string base: description: "Docs base path (default: /)" required: false type: string name: description: "Project name (default: )" required: false type: string permissions: contents: read pages: write id-token: write jobs: build: runs-on: ubuntu-latest steps: - name: Checkout target repository uses: actions/checkout@v4 - name: Ensure docs-builder exists (checkout tiny-docs if missing) if: ${{ hashFiles('docs-builder/**') == '' }} uses: actions/checkout@v4 with: repository: ${{ inputs.tiny_docs_repo }} path: docs-builder - name: Derive defaults (owner/repo → site/base/name) id: derive shell: bash env: IN_SITE: ${{ inputs.site }} IN_BASE: ${{ inputs.base }} IN_NAME: ${{ inputs.name }} run: | set -euo pipefail OWNER="${GITHUB_REPOSITORY%/*}" REPO="${GITHUB_REPOSITORY#*/}" SITE_DEFAULT="https://${OWNER}.github.io" BASE_DEFAULT="/${REPO}" NAME_DEFAULT="${REPO}" SITE="${IN_SITE:-}" BASE="${IN_BASE:-}" NAME="${IN_NAME:-}" SITE="${SITE:-$SITE_DEFAULT}" BASE="${BASE:-$BASE_DEFAULT}" NAME="${NAME:-$NAME_DEFAULT}" echo "site=$SITE" >> "$GITHUB_OUTPUT" echo "base=$BASE" >> "$GITHUB_OUTPUT" echo "name=$NAME" >> "$GITHUB_OUTPUT" - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Ensure tdocs.config.json has required fields (merge w/ defaults) env: DERIVED_SITE: ${{ steps.derive.outputs.site }} DERIVED_BASE: ${{ steps.derive.outputs.base }} DERIVED_NAME: ${{ steps.derive.outputs.name }} run: node docs-builder/scripts/update-config.js - name: Install, build, and upload the site artifact uses: withastro/action@v3 with: path: docs-builder/ deploy: needs: build runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4