@voxgig/create-sdkgen 0.20.4 → 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/dist/project/standard/CreateRoot.js +7 -1
- package/dist/project/standard/CreateRoot.js.map +1 -1
- package/package.json +1 -1
- package/project/standard/.github/workflows/ci.yml +26 -7
- package/project/standard/.sdk/admin/README.md +31 -0
- package/project/standard/.sdk/admin/status.sh +10 -0
- package/project/standard/.sdk/build/docgen.js +2 -15
- package/project/standard/.sdk/model/.model-config/model-config.aon +0 -1
- package/project/standard/.sdk/model/edition/edition-index.aon +1 -0
- package/project/standard/.sdk/model/sdk.fragment.aon +3 -0
- package/project/standard/.sdk/package.json +10 -5
- package/project/standard/.sdk/src/BuildSDK.ts +8 -1
- package/src/project/standard/CreateRoot.ts +8 -1
- package/project/standard/.sdk/src/DocStaticRoot.ts +0 -45
package/README.md
CHANGED
|
@@ -70,3 +70,30 @@ are in the [sdkgen documentation](https://github.com/voxgig/sdkgen/tree/main/doc
|
|
|
70
70
|
How to validate a change, and why a pull request from a fork gets no CI, are
|
|
71
71
|
in [`CONTRIBUTING.md`](./CONTRIBUTING.md). The documentation follows
|
|
72
72
|
[the style guide](./STYLE-GUIDE.md).
|
|
73
|
+
|
|
74
|
+
## Documentation editions
|
|
75
|
+
|
|
76
|
+
New projects include `@voxgig/docgen`. Installing the `.sdk` dependencies adds
|
|
77
|
+
the `summary` and `github-pages` editions. `npm run generate` then produces
|
|
78
|
+
`SUMMARY.md` and the static HTML site in `docs/`. It also adds text QA and a GitHub Pages workflow. With `--no-install`, setup happens when dependencies are installed.
|
|
79
|
+
|
|
80
|
+
Add the optional Slidev presentation from `.sdk`:
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
npx voxgig-sdkgen edition add presentation
|
|
84
|
+
npm run generate
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Configure shared branding and each edition under `main.kit.doc` in the model.
|
|
88
|
+
Customise templates in `.sdk/tm/edition/` and add authored Markdown in
|
|
89
|
+
`.sdk/doc/content/`. SDK README generation remains a separate SDK phase.
|
|
90
|
+
The [docgen guide](https://github.com/voxgig/docgen) describes the model,
|
|
91
|
+
local assets, presentation builds, and Vale text QA.
|
|
92
|
+
|
|
93
|
+
## Repository administration
|
|
94
|
+
|
|
95
|
+
New projects include `.sdk/admin/status.sh`. Run it to review local repository,
|
|
96
|
+
SDK, and documentation status; add `--github` to read CI and Pages status through
|
|
97
|
+
`gh`. Docgen generates `.sdk/admin/setup-github-pages.sh` for Pages setup.
|
|
98
|
+
See the [administration reference](https://github.com/voxgig/sdkgen/blob/main/docs/reference/project-layout.md#repository-administration)
|
|
99
|
+
for script options and ownership.
|
|
@@ -223,7 +223,7 @@ const CreateRoot = (0, jostraca_1.cmp)(function CreateRoot(props) {
|
|
|
223
223
|
const guideExclude = [spec.sdk_folder, ...GUIDE_REL].join('/');
|
|
224
224
|
(0, jostraca_1.Copy)({
|
|
225
225
|
from,
|
|
226
|
-
exclude: [/\.fragment\./, guideExclude]
|
|
226
|
+
exclude: [/\.fragment\./, guideExclude, /^\.sdk\/admin\/.*\.sh$/]
|
|
227
227
|
});
|
|
228
228
|
(0, jostraca_1.File)({ name: '.gitignore' }, () => {
|
|
229
229
|
(0, jostraca_1.Content)(GITIGNORE_TOP);
|
|
@@ -232,6 +232,12 @@ const CreateRoot = (0, jostraca_1.cmp)(function CreateRoot(props) {
|
|
|
232
232
|
const projdef = sanitizeDefName(node_path_1.default.basename(origdef));
|
|
233
233
|
spec.def = projdef;
|
|
234
234
|
(0, jostraca_1.Folder)({ name: spec.sdk_folder }, () => {
|
|
235
|
+
(0, jostraca_1.Folder)({ name: 'admin' }, () => {
|
|
236
|
+
const admin = node_path_1.default.join(from, spec.sdk_folder, 'admin');
|
|
237
|
+
for (const name of fs.readdirSync(admin).filter((name) => name.endsWith('.sh')).sort()) {
|
|
238
|
+
(0, jostraca_1.File)({ name, mode: 0o755 }, () => (0, jostraca_1.Content)(fs.readFileSync(node_path_1.default.join(admin, name), 'utf8')));
|
|
239
|
+
}
|
|
240
|
+
});
|
|
235
241
|
(0, jostraca_1.File)({ name: '.gitignore' }, () => {
|
|
236
242
|
(0, jostraca_1.Content)(GITIGNORE_SDK);
|
|
237
243
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateRoot.js","sourceRoot":"","sources":["../../../src/project/standard/CreateRoot.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"CreateRoot.js","sourceRoot":"","sources":["../../../src/project/standard/CreateRoot.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -289,7 +289,14 @@ jobs:
|
|
|
289
289
|
continue-on-error: true
|
|
290
290
|
steps:
|
|
291
291
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
292
|
-
# gcc/make are preinstalled on ubuntu-latest
|
|
292
|
+
# gcc/make are preinstalled on ubuntu-latest, but the secrets feature's
|
|
293
|
+
# generated feature/secrets/kinds.mk adds `-lssl -lcrypto -lcurl` when a
|
|
294
|
+
# plugin group is active, and feature/secrets/kinds.c includes
|
|
295
|
+
# <curl/curl.h>. The runner image ships neither header set, so the build
|
|
296
|
+
# stopped at `fatal error: curl/curl.h: No such file or directory`.
|
|
297
|
+
# A model with no active plugin group links libc alone and this is inert.
|
|
298
|
+
- if: hashFiles('c/Makefile') != ''
|
|
299
|
+
run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libssl-dev
|
|
293
300
|
- if: hashFiles('c/Makefile') != ''
|
|
294
301
|
run: make -C c test
|
|
295
302
|
|
|
@@ -313,13 +320,25 @@ jobs:
|
|
|
313
320
|
# parse, so a split leaves the generated SDK unbuildable on one side
|
|
314
321
|
# or the other. It was 0.13 until the target was ported, which is
|
|
315
322
|
# what let omni's zig port be vendored at all.
|
|
316
|
-
#
|
|
317
|
-
#
|
|
318
|
-
#
|
|
323
|
+
# INSTALLED FROM ziglang.org, NOT setup-zig. That action resolves the
|
|
324
|
+
# toolchain through community mirrors, and they failed every run: 404
|
|
325
|
+
# from zig.linus.dev, 503 from zig.nekos.space, 502 from
|
|
326
|
+
# zigmirror.hryx.net, with no fallback to the official host. The job had
|
|
327
|
+
# not gone green once. ziglang.org serves the same tarball and answers
|
|
328
|
+
# 200; `--retry` covers an ordinary blip. This also drops the node20
|
|
329
|
+
# deprecation warning that pinned the action to v1.
|
|
319
330
|
- if: hashFiles('zig/build.zig') != ''
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
version
|
|
331
|
+
run: |
|
|
332
|
+
set -euo pipefail
|
|
333
|
+
version=0.16.0
|
|
334
|
+
curl -fsSL --retry 5 --retry-all-errors \
|
|
335
|
+
-o /tmp/zig.tar.xz \
|
|
336
|
+
"https://ziglang.org/download/${version}/zig-x86_64-linux-${version}.tar.xz"
|
|
337
|
+
sudo mkdir -p /opt/zig
|
|
338
|
+
sudo tar -xJf /tmp/zig.tar.xz -C /opt/zig --strip-components=1
|
|
339
|
+
echo /opt/zig >> "$GITHUB_PATH"
|
|
340
|
+
- if: hashFiles('zig/build.zig') != ''
|
|
341
|
+
run: zig version
|
|
323
342
|
- if: hashFiles('zig/build.zig') != ''
|
|
324
343
|
run: make -C zig test
|
|
325
344
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Repository administration
|
|
2
|
+
|
|
3
|
+
Run these scripts from any working directory:
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
.sdk/admin/status.sh
|
|
7
|
+
.sdk/admin/status.sh --json
|
|
8
|
+
.sdk/admin/status.sh --github
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`status.sh` reads the compiled SDK model, repository state, target directories,
|
|
12
|
+
publication settings, tool versions, and documentation outputs. It does not run
|
|
13
|
+
builds or tests, contact package registries, fetch Git refs, or change files.
|
|
14
|
+
`--github` also reads recent workflow runs and Pages status through `gh`.
|
|
15
|
+
Install the `.sdk` dependencies before using it.
|
|
16
|
+
|
|
17
|
+
When a GitHub Pages edition and its CI workflow are enabled, docgen generates
|
|
18
|
+
`setup-github-pages.sh` here. Preview its changes, then configure Pages:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
.sdk/admin/setup-github-pages.sh --dry-run
|
|
22
|
+
.sdk/admin/setup-github-pages.sh
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The setup script configures GitHub Actions as the publishing source. It does
|
|
26
|
+
not commit, push, merge, or deploy. Push the documentation workflow and project
|
|
27
|
+
changes to its configured deployment branch to publish the website.
|
|
28
|
+
|
|
29
|
+
The status launcher comes from create-sdkgen; its reporting code comes from
|
|
30
|
+
sdkgen. Docgen owns the generated Pages setup script. Put project-specific
|
|
31
|
+
administration scripts beside them with different names.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Standard repository status report. Implementation is supplied by sdkgen.
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
sdk_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
|
+
report="$sdk_dir/node_modules/@voxgig/sdkgen/dist/admin/status.js"
|
|
6
|
+
if [[ ! -f "$report" ]]; then
|
|
7
|
+
echo 'Install or update the .sdk dependencies to use the status report.' >&2
|
|
8
|
+
exit 1
|
|
9
|
+
fi
|
|
10
|
+
exec node "$report" "$sdk_dir/.." "$@"
|
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const config = {
|
|
5
|
-
root: __dirname+'/../dist/DocStaticRoot.js',
|
|
6
|
-
folder: __dirname+'/../../doc',
|
|
7
|
-
meta: {
|
|
8
|
-
name: '$$name$$'
|
|
9
|
-
},
|
|
10
|
-
model: {
|
|
11
|
-
folder: __dirname+'/../model',
|
|
12
|
-
},
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
module.exports = DocGen.makeBuild(config)
|
|
1
|
+
// Docgen owns the default edition set and preserves project customisations.
|
|
2
|
+
require('@voxgig/docgen').prepareProject(require('node:path').resolve(__dirname, '../..'))
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Populated by docgen when the project toolchain is installed.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"version": "0.0.1",
|
|
4
4
|
"description": "$$const.Name$$ SDK Project",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"generate": "tsc --build src && voxgig-model model/sdk.aon && voxgig-model test/test.aon",
|
|
6
|
+
"generate": "node build/docgen.js && tsc --build src && voxgig-model model/sdk.aon && voxgig-model test/test.aon",
|
|
7
7
|
"watch-generate": "voxgig-model -w model/sdk.aon",
|
|
8
8
|
"dry-generate": "tsc --build src && voxgig-model -y model/sdk.aon",
|
|
9
9
|
"watch-dry-generate": "voxgig-model -w -y model/sdk.aon",
|
|
@@ -17,19 +17,24 @@
|
|
|
17
17
|
"add-target": "voxgig-sdkgen target add",
|
|
18
18
|
"dry-add-target": "voxgig-sdkgen -y target add",
|
|
19
19
|
"add-feature": "voxgig-sdkgen feature add",
|
|
20
|
-
"dry-add-feature": "voxgig-sdkgen -y feature add"
|
|
20
|
+
"dry-add-feature": "voxgig-sdkgen -y feature add",
|
|
21
|
+
"add-edition": "voxgig-sdkgen edition add",
|
|
22
|
+
"text-qa": "cd .. && voxgig-docgen qa",
|
|
23
|
+
"postinstall": "node build/docgen.js",
|
|
24
|
+
"status": "bash admin/status.sh"
|
|
21
25
|
},
|
|
22
26
|
"author": "$$const.Name$$",
|
|
23
27
|
"license": "$$const.License$$",
|
|
24
28
|
"devDependencies": {
|
|
25
29
|
"@types/node": ">=25.6",
|
|
26
30
|
"typescript": ">=6.0",
|
|
27
|
-
"@voxgig/apidef": ">=8.0",
|
|
31
|
+
"@voxgig/apidef": ">=8.6.0",
|
|
28
32
|
"@voxgig/model": ">=10.0",
|
|
29
|
-
"@voxgig/sdkgen": ">=4.0",
|
|
33
|
+
"@voxgig/sdkgen": ">=4.17.0",
|
|
30
34
|
"@voxgig/util": ">=0.5",
|
|
31
35
|
"@voxgig/struct": ">=0.2",
|
|
32
36
|
"jostraca": ">=0.33.1",
|
|
33
|
-
"aontu": ">=0.52"
|
|
37
|
+
"aontu": ">=0.52",
|
|
38
|
+
"@voxgig/docgen": ">=0.10.1"
|
|
34
39
|
}
|
|
35
40
|
}
|
|
@@ -113,6 +113,13 @@ function makeEntityTestData(_model: Model, entity: ModelEntity) {
|
|
|
113
113
|
makeEntityTestFields(entity, i++, ent)
|
|
114
114
|
delete ent.id
|
|
115
115
|
|
|
116
|
+
// Request contracts are separate from synthetic stored mock records.
|
|
117
|
+
data.requests = {}
|
|
118
|
+
for (const op of Object.values(entity.op || {}) as any[]) for (const point of op.points || []) {
|
|
119
|
+
if (point.contract) data.requests[point.contract.id] = {
|
|
120
|
+
provenance: 'operation-contract', contract: JSON.parse(point.contract.json),
|
|
121
|
+
}
|
|
122
|
+
}
|
|
116
123
|
return data
|
|
117
124
|
}
|
|
118
125
|
|
|
@@ -170,7 +177,7 @@ function makeEntityTestFields(entity: ModelEntity, start: number, entdata: Recor
|
|
|
170
177
|
entdata[field.name] =
|
|
171
178
|
field.name.endsWith('_id') ?
|
|
172
179
|
field.name.substring(0, field.name.length - 3).toUpperCase() + '01' :
|
|
173
|
-
'`$NUMBER`'
|
|
180
|
+
['`$NUMBER`', '`$INTEGER`'].includes(field.type) ? num :
|
|
174
181
|
'`$BOOLEAN`' === field.type ? 0 === num % 2 :
|
|
175
182
|
'`$OBJECT`' === field.type ? {} :
|
|
176
183
|
'`$MAP`' === field.type ? {} :
|
|
@@ -258,7 +258,7 @@ const CreateRoot = cmp(function CreateRoot(props: any) {
|
|
|
258
258
|
|
|
259
259
|
Copy({
|
|
260
260
|
from,
|
|
261
|
-
exclude: [/\.fragment\./, guideExclude]
|
|
261
|
+
exclude: [/\.fragment\./, guideExclude, /^\.sdk\/admin\/.*\.sh$/]
|
|
262
262
|
})
|
|
263
263
|
|
|
264
264
|
File({ name: '.gitignore' }, () => {
|
|
@@ -270,6 +270,13 @@ const CreateRoot = cmp(function CreateRoot(props: any) {
|
|
|
270
270
|
spec.def = projdef
|
|
271
271
|
|
|
272
272
|
Folder({ name: spec.sdk_folder }, () => {
|
|
273
|
+
Folder({ name: 'admin' }, () => {
|
|
274
|
+
const admin = Path.join(from, spec.sdk_folder, 'admin')
|
|
275
|
+
for (const name of fs.readdirSync(admin).filter((name: string) => name.endsWith('.sh')).sort()) {
|
|
276
|
+
File({ name, mode: 0o755 }, () => Content(fs.readFileSync(Path.join(admin, name), 'utf8')))
|
|
277
|
+
}
|
|
278
|
+
})
|
|
279
|
+
|
|
273
280
|
File({ name: '.gitignore' }, () => {
|
|
274
281
|
Content(GITIGNORE_SDK)
|
|
275
282
|
})
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
// import {
|
|
3
|
-
// names,
|
|
4
|
-
// cmp,
|
|
5
|
-
// each,
|
|
6
|
-
|
|
7
|
-
// Project,
|
|
8
|
-
// Folder,
|
|
9
|
-
|
|
10
|
-
// Index,
|
|
11
|
-
// } from '@voxgig/docgen'
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
cmp,
|
|
15
|
-
} from '@voxgig/sdkgen'
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const Root = cmp(function Root(props: any) {
|
|
19
|
-
|
|
20
|
-
/*
|
|
21
|
-
const { model, ctx$ } = props
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
model.const = { name: model.name }
|
|
25
|
-
|
|
26
|
-
names(model.const, model.name)
|
|
27
|
-
|
|
28
|
-
model.const.year = new Date().getFullYear()
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
ctx$.model = model
|
|
32
|
-
|
|
33
|
-
Project({}, () => {
|
|
34
|
-
|
|
35
|
-
Index({})
|
|
36
|
-
|
|
37
|
-
})
|
|
38
|
-
*/
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
export {
|
|
43
|
-
Root
|
|
44
|
-
}
|
|
45
|
-
|