[READ-ONLY] Mirror of https://github.com/flo-bit/tiny-docs. quick setup, simple, minimalistic docs for your github project
flo-bit.dev/tiny-docs/
1name: Tiny Docs (Reusable)
2
3on:
4 workflow_call:
5 inputs:
6 tiny_docs_repo:
7 description: "Owner/Repo of your tiny-docs source"
8 required: false
9 type: string
10 default: flo-bit/tiny-docs
11 site:
12 description: "Docs site domain (default: https://<owner>.github.io)"
13 required: false
14 type: string
15 base:
16 description: "Docs base path (default: /<repo-name>)"
17 required: false
18 type: string
19 name:
20 description: "Project name (default: <repo-name>)"
21 required: false
22 type: string
23
24permissions:
25 contents: read
26 pages: write
27 id-token: write
28
29jobs:
30 build:
31 runs-on: ubuntu-latest
32 steps:
33 - name: Checkout target repository
34 uses: actions/checkout@v4
35
36 - name: Ensure docs-builder exists (checkout tiny-docs if missing)
37 if: ${{ hashFiles('docs-builder/**') == '' }}
38 uses: actions/checkout@v4
39 with:
40 repository: ${{ inputs.tiny_docs_repo }}
41 path: docs-builder
42
43 - name: Derive defaults (owner/repo → site/base/name)
44 id: derive
45 shell: bash
46 env:
47 IN_SITE: ${{ inputs.site }}
48 IN_BASE: ${{ inputs.base }}
49 IN_NAME: ${{ inputs.name }}
50 run: |
51 set -euo pipefail
52 OWNER="${GITHUB_REPOSITORY%/*}"
53 REPO="${GITHUB_REPOSITORY#*/}"
54
55 SITE_DEFAULT="https://${OWNER}.github.io"
56 BASE_DEFAULT="/${REPO}"
57 NAME_DEFAULT="${REPO}"
58
59 SITE="${IN_SITE:-}"
60 BASE="${IN_BASE:-}"
61 NAME="${IN_NAME:-}"
62
63 SITE="${SITE:-$SITE_DEFAULT}"
64 BASE="${BASE:-$BASE_DEFAULT}"
65 NAME="${NAME:-$NAME_DEFAULT}"
66
67 echo "site=$SITE" >> "$GITHUB_OUTPUT"
68 echo "base=$BASE" >> "$GITHUB_OUTPUT"
69 echo "name=$NAME" >> "$GITHUB_OUTPUT"
70
71 - name: Setup Node.js
72 uses: actions/setup-node@v4
73 with:
74 node-version: 20
75
76 - name: Ensure docs/config.json has required fields (merge w/ defaults)
77 env:
78 DERIVED_SITE: ${{ steps.derive.outputs.site }}
79 DERIVED_BASE: ${{ steps.derive.outputs.base }}
80 DERIVED_NAME: ${{ steps.derive.outputs.name }}
81 run: node scripts/update-config.js
82
83 - name: Install, build, and upload the site artifact
84 uses: withastro/action@v3
85 with:
86 path: docs-builder/
87
88 deploy:
89 needs: build
90 runs-on: ubuntu-latest
91 environment:
92 name: github-pages
93 url: ${{ steps.deployment.outputs.page_url }}
94 steps:
95 - name: Deploy to GitHub Pages
96 id: deployment
97 uses: actions/deploy-pages@v4