Skip to content

Commit 3af2ae2

Browse files
authored
feat: experimental new docs gen (#1240)
1 parent a5d949e commit 3af2ae2

File tree

9 files changed

+3997
-916
lines changed

9 files changed

+3997
-916
lines changed

.eslintignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ payloads/v8/*
1010
rest/v8/*
1111
utils/v8.ts
1212
v8.ts
13+
14+
djs/**/*

.github/workflows/documentation.yml

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
name: Documentation
2+
3+
on:
4+
push:
5+
branches:
6+
- 'main'
7+
paths:
8+
- '**'
9+
- '!website/**'
10+
tags:
11+
- '**'
12+
workflow_dispatch:
13+
inputs:
14+
ref:
15+
description: 'The branch, tag or SHA to checkout'
16+
required: true
17+
ref_type:
18+
type: choice
19+
description: 'Branch or tag'
20+
options:
21+
- branch
22+
- tag
23+
required: true
24+
25+
concurrency:
26+
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
27+
cancel-in-progress: true
28+
29+
jobs:
30+
build-docs:
31+
name: Build & upload documentation
32+
runs-on: ubuntu-latest
33+
env:
34+
REF_TYPE: ${{ inputs.ref_type || github.ref_type }}
35+
if: github.repository_owner == 'discordjs'
36+
37+
steps:
38+
- name: Checkout discord-api-types
39+
uses: actions/checkout@v4
40+
with:
41+
ref: ${{ inputs.ref || '' }}
42+
43+
- name: Install Node.js v22
44+
uses: actions/setup-node@v4
45+
with:
46+
node-version: 22
47+
48+
- name: Install dependencies for discord-api-types
49+
run: npm ci
50+
51+
#region DJS start (mostly from discord.js/packages/actions/src/pnpmCache)
52+
53+
- name: Checkout discord.js
54+
uses: actions/checkout@v4
55+
with:
56+
repository: discordjs/discord.js
57+
path: djs
58+
59+
- name: Set up swap space
60+
if: runner.os == 'Linux'
61+
uses: pierotofy/[email protected]
62+
with:
63+
swap-size-gb: 10
64+
65+
- uses: pnpm/[email protected]
66+
name: Install pnpm
67+
with:
68+
run_install: false
69+
70+
- name: Expose pnpm config(s) through "$GITHUB_OUTPUT"
71+
id: pnpm-config
72+
shell: bash
73+
run: |
74+
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
75+
76+
- name: Cache rotation keys
77+
id: cache-rotation
78+
shell: bash
79+
run: |
80+
echo "YEAR_MONTH=$(/bin/date -u "+%Y%m")" >> $GITHUB_OUTPUT
81+
82+
- uses: actions/cache@v4
83+
name: Setup pnpm cache
84+
with:
85+
path: ${{ steps.pnpm-config.outputs.STORE_PATH }}
86+
key: ${{ runner.os }}-pnpm-store-cache-${{ steps.cache-rotation.outputs.YEAR_MONTH }}-${{ hashFiles('**/pnpm-lock.yaml') }}
87+
restore-keys: |
88+
${{ runner.os }}-pnpm-store-cache-${{ steps.cache-rotation.outputs.YEAR_MONTH }}-
89+
90+
- name: Install djs dependencies
91+
working-directory: djs
92+
shell: bash
93+
run: |
94+
pnpm install --frozen-lockfile --prefer-offline --loglevel error
95+
env:
96+
HUSKY: '0'
97+
98+
- name: Build djs
99+
working-directory: djs
100+
shell: bash
101+
run: |
102+
pnpm run build
103+
104+
#endregion
105+
106+
- name: Extract package and semver from tag
107+
if: ${{ env.REF_TYPE == 'tag' }}
108+
id: extract-tag
109+
uses: ./djs/packages/actions/src/formatTag
110+
with:
111+
tag: ${{ inputs.ref || github.ref_name }}
112+
113+
- name: Apply tag to api-extractor config
114+
if: ${{ env.REF_TYPE == 'tag' && !inputs.ref }}
115+
run: sed -i 's!https://github.com/discordjs/discord-api-types/tree/main!https://github.com/discordjs/discord-api-types/tree/${{ github.ref_name }}!' "api-extractor.json"
116+
117+
- name: Build docs
118+
shell: bash
119+
run: |
120+
npm run prepublishOnly
121+
./djs/packages/api-extractor/bin/api-extractor run --local --minify
122+
./djs/packages/scripts/bin/generateSplitDocumentation.js
123+
npm run postpublish
124+
125+
- name: Upload documentation to database
126+
if: ${{ env.REF_TYPE == 'tag' && (!inputs.ref || inputs.ref == 'main') }}
127+
env:
128+
CF_D1_DOCS_API_KEY: ${{ secrets.CF_D1_DOCS_API_KEY }}
129+
CF_D1_DOCS_ID: ${{ secrets.CF_D1_DOCS_ID }}
130+
CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
131+
CF_R2_DOCS_URL: ${{ secrets.CF_R2_DOCS_URL }}
132+
CF_R2_DOCS_ACCESS_KEY_ID: ${{ secrets.CF_R2_DOCS_ACCESS_KEY_ID }}
133+
CF_R2_DOCS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_DOCS_SECRET_ACCESS_KEY }}
134+
CF_R2_DOCS_BUCKET: ${{ secrets.CF_R2_DOCS_BUCKET }}
135+
CF_R2_DOCS_BUCKET_URL: ${{ secrets.CF_R2_DOCS_BUCKET_URL }}
136+
ACTION_PACKAGE: ${{ steps.extract-tag.outputs.package }}
137+
ACTION_VERSION: ${{ steps.extract-tag.outputs.semver }}
138+
run: |
139+
npx tsx ./scripts/actions/documentation/uploadDocumentation.ts
140+
141+
- name: Upload documentation to database
142+
if: ${{ env.REF_TYPE == 'tag' && inputs.ref && inputs.ref != 'main' }}
143+
env:
144+
CF_D1_DOCS_API_KEY: ${{ secrets.CF_D1_DOCS_API_KEY }}
145+
CF_D1_DOCS_ID: ${{ secrets.CF_D1_DOCS_ID }}
146+
CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
147+
CF_R2_DOCS_URL: ${{ secrets.CF_R2_DOCS_URL }}
148+
CF_R2_DOCS_ACCESS_KEY_ID: ${{ secrets.CF_R2_DOCS_ACCESS_KEY_ID }}
149+
CF_R2_DOCS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_DOCS_SECRET_ACCESS_KEY }}
150+
CF_R2_DOCS_BUCKET: ${{ secrets.CF_R2_DOCS_BUCKET }}
151+
CF_R2_DOCS_BUCKET_URL: ${{ secrets.CF_R2_DOCS_BUCKET_URL }}
152+
ACTION_PACKAGE: ${{ steps.extract-tag.outputs.package }}
153+
ACTION_VERSION: ${{ steps.extract-tag.outputs.semver }}
154+
run: |
155+
npx tsx ./scripts/actions/documentation/uploadDocumentation.ts
156+
157+
- name: Upload split documentation to blob storage
158+
if: ${{ env.REF_TYPE == 'tag' && (!inputs.ref || inputs.ref == 'main') }}
159+
env:
160+
CF_R2_DOCS_URL: ${{ secrets.CF_R2_DOCS_URL }}
161+
CF_R2_DOCS_ACCESS_KEY_ID: ${{ secrets.CF_R2_DOCS_ACCESS_KEY_ID }}
162+
CF_R2_DOCS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_DOCS_SECRET_ACCESS_KEY }}
163+
CF_R2_DOCS_BUCKET: ${{ secrets.CF_R2_DOCS_BUCKET }}
164+
ACTION_PACKAGE: ${{ steps.extract-tag.outputs.package }}
165+
ACTION_VERSION: ${{ steps.extract-tag.outputs.semver }}
166+
run: |
167+
npx tsx ./scripts/actions/documentation/uploadSplitDocumentation.ts
168+
169+
- name: Upload split documentation to blob storage
170+
if: ${{ env.REF_TYPE == 'tag' && inputs.ref && inputs.ref != 'main' }}
171+
env:
172+
CF_R2_DOCS_URL: ${{ secrets.CF_R2_DOCS_URL }}
173+
CF_R2_DOCS_ACCESS_KEY_ID: ${{ secrets.CF_R2_DOCS_ACCESS_KEY_ID }}
174+
CF_R2_DOCS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_DOCS_SECRET_ACCESS_KEY }}
175+
CF_R2_DOCS_BUCKET: ${{ secrets.CF_R2_DOCS_BUCKET }}
176+
ACTION_PACKAGE: ${{ steps.extract-tag.outputs.package }}
177+
ACTION_VERSION: ${{ steps.extract-tag.outputs.semver }}
178+
run: |
179+
npx tsx ./scripts/actions/documentation/uploadSplitDocumentation.ts
180+
181+
- name: Upload documentation to database
182+
if: ${{ env.REF_TYPE == 'branch' && (!inputs.ref || inputs.ref == 'main') }}
183+
env:
184+
CF_D1_DOCS_API_KEY: ${{ secrets.CF_D1_DOCS_API_KEY }}
185+
CF_D1_DOCS_ID: ${{ secrets.CF_D1_DOCS_ID }}
186+
CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
187+
CF_R2_DOCS_URL: ${{ secrets.CF_R2_DOCS_URL }}
188+
CF_R2_DOCS_ACCESS_KEY_ID: ${{ secrets.CF_R2_DOCS_ACCESS_KEY_ID }}
189+
CF_R2_DOCS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_DOCS_SECRET_ACCESS_KEY }}
190+
CF_R2_DOCS_BUCKET: ${{ secrets.CF_R2_DOCS_BUCKET }}
191+
CF_R2_DOCS_BUCKET_URL: ${{ secrets.CF_R2_DOCS_BUCKET_URL }}
192+
ACTION_PACKAGE: ${{ steps.extract-tag.outputs.package }}
193+
ACTION_VERSION: ${{ steps.extract-tag.outputs.semver }}
194+
run: |
195+
npx tsx ./scripts/actions/documentation/uploadDocumentation.ts
196+
197+
- name: Upload documentation to database
198+
if: ${{ env.REF_TYPE == 'branch' && inputs.ref && inputs.ref != 'main' }}
199+
env:
200+
CF_D1_DOCS_API_KEY: ${{ secrets.CF_D1_DOCS_API_KEY }}
201+
CF_D1_DOCS_ID: ${{ secrets.CF_D1_DOCS_ID }}
202+
CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
203+
CF_R2_DOCS_URL: ${{ secrets.CF_R2_DOCS_URL }}
204+
CF_R2_DOCS_ACCESS_KEY_ID: ${{ secrets.CF_R2_DOCS_ACCESS_KEY_ID }}
205+
CF_R2_DOCS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_DOCS_SECRET_ACCESS_KEY }}
206+
CF_R2_DOCS_BUCKET: ${{ secrets.CF_R2_DOCS_BUCKET }}
207+
CF_R2_DOCS_BUCKET_URL: ${{ secrets.CF_R2_DOCS_BUCKET_URL }}
208+
ACTION_PACKAGE: ${{ steps.extract-tag.outputs.package }}
209+
ACTION_VERSION: ${{ steps.extract-tag.outputs.semver }}
210+
run: |
211+
npx tsx ./scripts/actions/documentation/uploadDocumentation.ts
212+
213+
- name: Upload split documentation to blob storage
214+
if: ${{ env.REF_TYPE == 'branch' && (!inputs.ref || inputs.ref == 'main') }}
215+
env:
216+
CF_R2_DOCS_URL: ${{ secrets.CF_R2_DOCS_URL }}
217+
CF_R2_DOCS_ACCESS_KEY_ID: ${{ secrets.CF_R2_DOCS_ACCESS_KEY_ID }}
218+
CF_R2_DOCS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_DOCS_SECRET_ACCESS_KEY }}
219+
CF_R2_DOCS_BUCKET: ${{ secrets.CF_R2_DOCS_BUCKET }}
220+
ACTION_PACKAGE: ${{ steps.extract-tag.outputs.package }}
221+
ACTION_VERSION: ${{ steps.extract-tag.outputs.semver }}
222+
run: |
223+
npx tsx ./scripts/actions/documentation/uploadSplitDocumentation.ts
224+
225+
- name: Upload split documentation to blob storage
226+
if: ${{ env.REF_TYPE == 'branch' && inputs.ref && inputs.ref != 'main' }}
227+
env:
228+
CF_R2_DOCS_URL: ${{ secrets.CF_R2_DOCS_URL }}
229+
CF_R2_DOCS_ACCESS_KEY_ID: ${{ secrets.CF_R2_DOCS_ACCESS_KEY_ID }}
230+
CF_R2_DOCS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_DOCS_SECRET_ACCESS_KEY }}
231+
CF_R2_DOCS_BUCKET: ${{ secrets.CF_R2_DOCS_BUCKET }}
232+
ACTION_PACKAGE: ${{ steps.extract-tag.outputs.package }}
233+
ACTION_VERSION: ${{ steps.extract-tag.outputs.semver }}
234+
run: |
235+
npx tsx ./scripts/actions/documentation/uploadSplitDocumentation.ts

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,6 @@ docs/*
6262

6363
# macOS files
6464
.DS_Store
65+
66+
# djs repo clone
67+
djs

0 commit comments

Comments
 (0)