feat: Yaml styles for open api overrides

This commit is contained in:
Ilya Kuznetsov 2024-12-10 14:00:00 +01:00
parent 073aeca5b7
commit a6c45d5bf7
No known key found for this signature in database
GPG Key ID: 91F3DDCF5D21CDDF
3 changed files with 162 additions and 111 deletions

View File

@ -110,32 +110,11 @@ func (d *annotationHandler) sync(outputPath string) error {
return err
}
existing, err := yamlloader.LoadYAML(outputPath, bytes.NewBuffer(existingFile))
missingAnnotations, err := yaml.Marshal(d.empty)
if err != nil {
return err
}
emptyB, err := yaml.Marshal(d.empty)
if err != nil {
return err
}
empty, err := yamlloader.LoadYAML("", bytes.NewBuffer(emptyB))
if err != nil {
return err
}
mergedFile, err := merge.Merge(existing, empty)
if err != nil {
return err
}
style := map[string]yaml3.Style{}
file, _ := mergedFile.AsMap()
for _, v := range file.Keys() {
style[v.MustString()] = yaml3.LiteralStyle
}
saver := yamlsaver.NewSaverWithStyle(style)
err = saver.SaveAsYAML(file, outputPath, true)
err = saveYamlWithStyle(outputPath, existingFile, missingAnnotations)
if err != nil {
return err
}
@ -158,3 +137,33 @@ func assingAnnotation(s *jsonschema.Schema, a annotation) {
s.Title = a.Title
s.Enum = a.Enum
}
func saveYamlWithStyle(outputPath string, input []byte, overrides []byte) error {
inputDyn, err := yamlloader.LoadYAML("", bytes.NewBuffer(input))
if err != nil {
return err
}
if len(overrides) != 0 {
overrideDyn, err := yamlloader.LoadYAML("", bytes.NewBuffer(overrides))
if err != nil {
return err
}
inputDyn, err = merge.Merge(inputDyn, overrideDyn)
if err != nil {
return err
}
}
style := map[string]yaml3.Style{}
file, _ := inputDyn.AsMap()
for _, v := range file.Keys() {
style[v.MustString()] = yaml3.LiteralStyle
}
saver := yamlsaver.NewSaverWithStyle(style)
err = saver.SaveAsYAML(file, outputPath, true)
if err != nil {
return err
}
return nil
}

View File

@ -1,112 +1,155 @@
github.com/databricks/cli/bundle/config/resources.Cluster:
data_security_mode:
description: PLACEHOLDER
docker_image:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
runtime_engine:
description: PLACEHOLDER
workload_type:
description: PLACEHOLDER
"data_security_mode":
"description": |-
PLACEHOLDER
"docker_image":
"description": |-
PLACEHOLDER
"permissions":
"description": |-
PLACEHOLDER
"runtime_engine":
"description": |-
PLACEHOLDER
"workload_type":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Dashboard:
embed_credentials:
description: PLACEHOLDER
file_path:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
"embed_credentials":
"description": |-
PLACEHOLDER
"file_path":
"description": |-
PLACEHOLDER
"permissions":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Job:
health:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
run_as:
description: PLACEHOLDER
"health":
"description": |-
PLACEHOLDER
"permissions":
"description": |-
PLACEHOLDER
"run_as":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.MlflowExperiment:
permissions:
description: PLACEHOLDER
"permissions":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.MlflowModel:
permissions:
description: PLACEHOLDER
"permissions":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.ModelServingEndpoint:
permissions:
description: PLACEHOLDER
"permissions":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Pipeline:
permissions:
description: PLACEHOLDER
"permissions":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.QualityMonitor:
table_name:
description: PLACEHOLDER
"table_name":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.RegisteredModel:
grants:
description: PLACEHOLDER
"grants":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Schema:
grants:
description: PLACEHOLDER
properties:
description: PLACEHOLDER
"grants":
"description": |-
PLACEHOLDER
"properties":
"description": |-
PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Volume:
grants:
description: PLACEHOLDER
volume_type:
description: PLACEHOLDER
"grants":
"description": |-
PLACEHOLDER
"volume_type":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.AwsAttributes:
availability:
description: PLACEHOLDER
ebs_volume_type:
description: PLACEHOLDER
"availability":
"description": |-
PLACEHOLDER
"ebs_volume_type":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.AzureAttributes:
availability:
description: PLACEHOLDER
"availability":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec:
data_security_mode:
description: PLACEHOLDER
docker_image:
description: PLACEHOLDER
runtime_engine:
description: PLACEHOLDER
workload_type:
description: PLACEHOLDER
"data_security_mode":
"description": |-
PLACEHOLDER
"docker_image":
"description": |-
PLACEHOLDER
"runtime_engine":
"description": |-
PLACEHOLDER
"workload_type":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.DockerImage:
basic_auth:
description: PLACEHOLDER
"basic_auth":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.GcpAttributes:
availability:
description: PLACEHOLDER
"availability":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.GitSource:
git_snapshot:
description: PLACEHOLDER
"git_snapshot":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobEnvironment:
spec:
description: PLACEHOLDER
"spec":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobsHealthRule:
metric:
description: PLACEHOLDER
op:
description: PLACEHOLDER
"metric":
"description": |-
PLACEHOLDER
"op":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobsHealthRules:
rules:
description: PLACEHOLDER
"rules":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.RunJobTask:
python_named_params:
description: PLACEHOLDER
"python_named_params":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Task:
health:
description: PLACEHOLDER
"health":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.TriggerSettings:
table_update:
description: PLACEHOLDER
"table_update":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Webhook:
id:
description: PLACEHOLDER
"id":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.CronTrigger:
quartz_cron_schedule:
description: PLACEHOLDER
timezone_id:
description: PLACEHOLDER
"quartz_cron_schedule":
"description": |-
PLACEHOLDER
"timezone_id":
"description": |-
PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.PipelineTrigger:
cron:
description: PLACEHOLDER
manual:
description: PLACEHOLDER
"cron":
"description": |-
PLACEHOLDER
"manual":
"description": |-
PLACEHOLDER

View File

@ -147,11 +147,10 @@ func (p *openapiParser) extractAnnotations(typ reflect.Type, outputPath, overrid
if err != nil {
return err
}
err = os.WriteFile(overridesPath, b, 0644)
err = saveYamlWithStyle(overridesPath, b, []byte{})
if err != nil {
return err
}
b, err = yaml.Marshal(annotations)
if err != nil {
return err