feat: Add examples to the docs

This commit is contained in:
Ilya Kuznetsov 2025-01-02 16:13:24 +01:00
parent 40c4b3a40a
commit 820dd5f34c
No known key found for this signature in database
GPG Key ID: 91F3DDCF5D21CDDF
6 changed files with 90 additions and 3 deletions

View File

@ -50,6 +50,7 @@ func getNodes(s jsonschema.Schema, refs map[string]jsonschema.Schema, customFiel
Title: k, Title: k,
Description: getDescription(v, item.topLevel), Description: getDescription(v, item.topLevel),
TopLevel: item.topLevel, TopLevel: item.topLevel,
Example: getExample(v),
} }
node.Attributes = getAttributes(v.Properties, refs) node.Attributes = getAttributes(v.Properties, refs)
@ -80,6 +81,15 @@ func getNodes(s jsonschema.Schema, refs map[string]jsonschema.Schema, customFiel
return nodes return nodes
} }
const header = `---
description: Configuration reference for databricks.yml
---
# Configuration reference
This article provides reference for keys supported by <DABS> configuration (YAML). See [\_](/dev-tools/bundles/index.md).
`
func buildMarkdown(nodes []rootNode, outputFile string) error { func buildMarkdown(nodes []rootNode, outputFile string) error {
f, err := os.Create(outputFile) f, err := os.Create(outputFile)
if err != nil { if err != nil {
@ -88,6 +98,7 @@ func buildMarkdown(nodes []rootNode, outputFile string) error {
defer f.Close() defer f.Close()
m := md.NewMarkdown(f) m := md.NewMarkdown(f)
m = m.PlainText(header)
for _, node := range nodes { for _, node := range nodes {
m = m.LF() m = m.LF()
if node.TopLevel { if node.TopLevel {
@ -111,10 +122,16 @@ func buildMarkdown(nodes []rootNode, outputFile string) error {
m = m.LF() m = m.LF()
m = buildAttributeTable(m, node.ArrayItemAttributes) m = buildAttributeTable(m, node.ArrayItemAttributes)
} else if len(node.Attributes) > 0 { } else if len(node.Attributes) > 0 {
// m = m.H4("Attributes")
m = m.LF() m = m.LF()
m = buildAttributeTable(m, node.Attributes) m = buildAttributeTable(m, node.Attributes)
} }
if node.Example != "" {
m = m.LF()
m = m.H3("Example")
m = m.LF()
m = m.PlainText(node.Example)
}
} }
err = m.Build() err = m.Build()
@ -204,6 +221,7 @@ func resolveRefs(s *jsonschema.Schema, schemas map[string]jsonschema.Schema) *js
description := s.Description description := s.Description
markdownDescription := s.MarkdownDescription markdownDescription := s.MarkdownDescription
examples := s.Examples
for node.Reference != nil { for node.Reference != nil {
ref := strings.TrimPrefix(*node.Reference, "#/$defs/") ref := strings.TrimPrefix(*node.Reference, "#/$defs/")
@ -218,12 +236,16 @@ func resolveRefs(s *jsonschema.Schema, schemas map[string]jsonschema.Schema) *js
if markdownDescription == "" { if markdownDescription == "" {
markdownDescription = newNode.MarkdownDescription markdownDescription = newNode.MarkdownDescription
} }
if len(examples) == 0 {
examples = newNode.Examples
}
node = &newNode node = &newNode
} }
node.Description = description node.Description = description
node.MarkdownDescription = markdownDescription node.MarkdownDescription = markdownDescription
node.Examples = examples
return node return node
} }
@ -247,3 +269,11 @@ func extractNodes(prefix string, props map[string]*jsonschema.Schema, refs map[s
} }
return nodes return nodes
} }
func getExample(v *jsonschema.Schema) string {
examples := v.Examples
if len(examples) == 0 {
return ""
}
return examples[0].(string)
}

View File

@ -1,3 +1,11 @@
---
description: Configuration reference for databricks.yml
---
# Configuration reference
This article provides reference for keys supported by <DABS> configuration (YAML). See [\_](/dev-tools/bundles/index.md).
## artifacts ## artifacts
@ -46,6 +54,16 @@ Each item has the following attributes:
- The type of the artifact. Valid values are `wheel` or `jar` - The type of the artifact. Valid values are `wheel` or `jar`
### Example
```yaml
artifacts:
default:
type: whl
build: poetry build
path: .
```
## bundle ## bundle
The attributes of the bundle. See [_](/dev-tools/bundles/settings.md#bundle) The attributes of the bundle. See [_](/dev-tools/bundles/settings.md#bundle)
@ -246,6 +264,18 @@ Each item of `permissions` has the following attributes:
- The name of the user that has the permission set in level. - The name of the user that has the permission set in level.
### Example
```yaml
permissions:
- level: CAN_VIEW
group_name: test-group
- level: CAN_MANAGE
user_name: someone@example.com
- level: CAN_RUN
service_principal_name: 123456-abcdef
```
## presets ## presets
Defines bundle deployment presets. See [_](/dev-tools/bundles/deployment-modes.md#presets). Defines bundle deployment presets. See [_](/dev-tools/bundles/deployment-modes.md#presets).

View File

@ -87,6 +87,7 @@ type annotation struct {
Title string `json:"title,omitempty"` Title string `json:"title,omitempty"`
Default any `json:"default,omitempty"` Default any `json:"default,omitempty"`
Enum []any `json:"enum,omitempty"` Enum []any `json:"enum,omitempty"`
MarkdownExamples string `json:"markdown_examples,omitempty"`
} }
func generateDocs(workdir, outputPath string) error { func generateDocs(workdir, outputPath string) error {
@ -157,6 +158,9 @@ func assignAnnotation(s *jsonschema.Schema, a annotation) {
if a.MarkdownDescription != "" { if a.MarkdownDescription != "" {
s.MarkdownDescription = a.MarkdownDescription s.MarkdownDescription = a.MarkdownDescription
} }
if a.MarkdownExamples != "" {
s.Examples = []any{a.MarkdownExamples}
}
} }
func LoadAndMergeAnnotations(sources []string) (annotationFile, error) { func LoadAndMergeAnnotations(sources []string) (annotationFile, error) {

View File

@ -24,6 +24,7 @@ type annotation struct {
Title string `json:"title,omitempty"` Title string `json:"title,omitempty"`
Default any `json:"default,omitempty"` Default any `json:"default,omitempty"`
Enum []any `json:"enum,omitempty"` Enum []any `json:"enum,omitempty"`
MarkdownExamples string `json:"markdown_examples,omitempty"`
} }
type annotationHandler struct { type annotationHandler struct {

View File

@ -183,6 +183,14 @@ github.com/databricks/cli/bundle/config.Root:
"artifacts": "artifacts":
"description": |- "description": |-
Defines the attributes to build an artifact Defines the attributes to build an artifact
"markdown_examples": |-
```yaml
artifacts:
default:
type: whl
build: poetry build
path: .
```
"bundle": "bundle":
"description": |- "description": |-
The attributes of the bundle. The attributes of the bundle.
@ -201,6 +209,16 @@ github.com/databricks/cli/bundle/config.Root:
Defines the permissions to apply to experiments, jobs, pipelines, and models defined in the bundle Defines the permissions to apply to experiments, jobs, pipelines, and models defined in the bundle
"markdown_description": |- "markdown_description": |-
Defines the permissions to apply to experiments, jobs, pipelines, and models defined in the bundle. See [_](/dev-tools/bundles/settings.md#permissions) and [_](/dev-tools/bundles/permissions.md). Defines the permissions to apply to experiments, jobs, pipelines, and models defined in the bundle. See [_](/dev-tools/bundles/settings.md#permissions) and [_](/dev-tools/bundles/permissions.md).
"markdown_examples": |-
```yaml
permissions:
- level: CAN_VIEW
group_name: test-group
- level: CAN_MANAGE
user_name: someone@example.com
- level: CAN_RUN
service_principal_name: 123456-abcdef
```
"presets": "presets":
"description": |- "description": |-
Defines bundle deployment presets. Defines bundle deployment presets.
@ -445,8 +463,8 @@ github.com/databricks/databricks-sdk-go/service/serving.Ai21LabsConfig:
"ai21labs_api_key_plaintext": "ai21labs_api_key_plaintext":
"description": |- "description": |-
PLACEHOLDER PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.GoogleCloudVertexAiConfig: ? github.com/databricks/databricks-sdk-go/service/serving.GoogleCloudVertexAiConfig
"private_key": : "private_key":
"description": |- "description": |-
PLACEHOLDER PLACEHOLDER
"private_key_plaintext": "private_key_plaintext":

View File

@ -76,6 +76,10 @@ type Schema struct {
// Title of the object, rendered as inline documentation in the IDE. // Title of the object, rendered as inline documentation in the IDE.
// https://json-schema.org/understanding-json-schema/reference/annotations // https://json-schema.org/understanding-json-schema/reference/annotations
Title string `json:"title,omitempty"` Title string `json:"title,omitempty"`
// Examples of the value for properties in the schema.
// https://json-schema.org/understanding-json-schema/reference/annotations
Examples []any `json:"examples,omitempty"`
} }
// Default value defined in a JSON Schema, represented as a string. // Default value defined in a JSON Schema, represented as a string.