Skip to content

Commit 80405e1

Browse files
authored
feat: add resource doc template and mise task (#2540)
* feat: add resource doc template with gomplate Add template and tooling for creating new resource reference docs: - templates/resource.md with Go template syntax - gomplate as mise dependency for template rendering - mise new:resource task for doc generation Usage: mise new:resource MeshService Signed-off-by: Marcin Skalski <skalskimarcin33@gmail.com> * update fronmatter Signed-off-by: Marcin Skalski <skalskimarcin33@gmail.com> --------- Signed-off-by: Marcin Skalski <skalskimarcin33@gmail.com>
1 parent cc8a4ad commit 80405e1

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ jobs:
153153
.filter(d => d.status != "removed")
154154
.filter(d => !d.filename.includes("/generated/"))
155155
.filter(d => !d.filename.includes("/raw/"))
156+
.filter(d => !d.filename.startsWith("templates/"))
156157
.map(d => d.filename);
157158
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
158159
- uses: errata-ai/vale-action@d89dee975228ae261d22c15adcd03578634d429c # v2.1.1

CONTRIBUTING.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@ mise vale:branch # Run Vale linter only
7474
mise vale:version-urls # Run version URL checker only
7575
```
7676

77+
#### Creating new resource docs
78+
79+
To create a new resource reference doc from template:
80+
81+
```sh
82+
mise new:resource MeshService
83+
```
84+
85+
This creates `app/_src/resources/meshservice.md` from the template. Update the nav file after creation.
86+
7787
#### Page metadata
7888

7989
All documentation pages should include frontmatter metadata for SEO and search:

mise.toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ yarn = "1.22.22"
88
vale = "3.13.0"
99
shellcheck = "0.10.0"
1010
"go:github.com/raviqqe/muffet/v2" = "v2.11.0"
11+
"go:github.com/hairyhenderson/gomplate/v4/cmd/gomplate" = "v4.3.0"
1112
shellspec = "0.28.1"
1213

1314
[tasks.install]
@@ -106,6 +107,7 @@ git diff --name-only --diff-filter=d origin/master...HEAD | \
106107
grep -E '\\.(md|markdown)$' | \
107108
grep -v '/generated/' | \
108109
grep -v '/raw/' | \
110+
grep -v '^templates/' | \
109111
xargs -r vale
110112
"""
111113

@@ -128,3 +130,20 @@ run = "shellcheck tools/*.sh"
128130
[tasks.check]
129131
description = "Run necessary checks"
130132
depends = ["vale:branch", "vale:version-urls", "frontmatter:validate"]
133+
134+
[tasks."new:resource"]
135+
description = "Create new resource reference doc"
136+
run = '''
137+
RESOURCE_NAME={{arg(name="resource")}}
138+
LOWERCASE=$(echo "$RESOURCE_NAME" | tr '[:upper:]' '[:lower:]')
139+
OUTPUT="app/_src/resources/${LOWERCASE}.md"
140+
if [ -f "$OUTPUT" ]; then
141+
echo "Error: $OUTPUT already exists" >&2
142+
exit 1
143+
fi
144+
mkdir -p app/_src/resources
145+
export RESOURCE_NAME
146+
gomplate -f templates/resource.md -o "$OUTPUT"
147+
echo "Created $OUTPUT"
148+
echo "TODO: Update nav in latest app/_data/docs_nav_kuma_2.x.x.yml"
149+
'''

templates/resource.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: {{ .Env.RESOURCE_NAME }}
3+
description: TODO: Add description
4+
# Use exactly 3 keywords for optimal Algolia search performance
5+
keywords:
6+
- {{ .Env.RESOURCE_NAME }}
7+
- resource
8+
- reference
9+
content_type: reference
10+
category: resource
11+
---
12+
13+
TODO: Add introduction
14+
15+
## Spec fields
16+
17+
<!-- Document each spec field with:
18+
### fieldName
19+
20+
Description of field purpose and behavior.
21+
22+
**Type:** `type` | **Required:** Yes/No | **Default:** `value`
23+
24+
#### nestedField (if applicable)
25+
-->
26+
27+
## Examples
28+
29+
### Basic {{ .Env.RESOURCE_NAME }}
30+
31+
{% tabs %}
32+
{% tab Kubernetes %}
33+
34+
```yaml
35+
apiVersion: kuma.io/v1alpha1
36+
kind: {{ .Env.RESOURCE_NAME }}
37+
metadata:
38+
name: example
39+
```
40+
41+
{% endtab %}
42+
{% tab Universal %}
43+
44+
```yaml
45+
type: {{ .Env.RESOURCE_NAME }}
46+
name: example
47+
```
48+
49+
{% endtab %}
50+
{% endtabs %}
51+
52+
## See also
53+
54+
- [Related doc](/docs/{{ "{{" }} page.release {{ "}}" }}/path)
55+
56+
## All options
57+
58+
{% json_schema {{ .Env.RESOURCE_NAME }} type=proto %}

0 commit comments

Comments
 (0)