Skip to content

Commit ff15b74

Browse files
committed
merge resolved config into default template and save it as lima.yaml
Signed-off-by: Ansuman Sahoo <[email protected]>
1 parent 951d9ca commit ff15b74

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

pkg/instance/create.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/lima-vm/lima/v2/pkg/store"
1919
"github.com/lima-vm/lima/v2/pkg/store/filenames"
2020
"github.com/lima-vm/lima/v2/pkg/version"
21+
"github.com/lima-vm/lima/v2/pkg/yqutil"
2122
)
2223

2324
func Create(ctx context.Context, instName string, instConfig []byte, saveBrokenYAML bool) (*limatype.Instance, error) {
@@ -61,7 +62,17 @@ func Create(ctx context.Context, instName string, instConfig []byte, saveBrokenY
6162
if err := os.MkdirAll(instDir, 0o700); err != nil {
6263
return nil, err
6364
}
64-
if err := os.WriteFile(filePath, instConfig, 0o644); err != nil {
65+
66+
resolvedConfigBytes, err := limayaml.Marshal(loadedInstConfig, false)
67+
if err != nil {
68+
return nil, fmt.Errorf("failed to marshal resolved configuration: %w", err)
69+
}
70+
mergedConfig, err := yqutil.MergeWithResolved(instConfig, resolvedConfigBytes)
71+
if err != nil {
72+
return nil, fmt.Errorf("failed to merge resolved config into template: %w", err)
73+
}
74+
75+
if err := os.WriteFile(filePath, mergedConfig, 0o644); err != nil {
6576
return nil, err
6677
}
6778
if err := cidata.GenerateCloudConfig(instDir, instName, loadedInstConfig); err != nil {

pkg/yqutil/yqutil.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,10 @@ func yamlfmtBasicFormatter() (*basic.BasicFormatter, error) {
132132
}
133133
return basicFormatter, nil
134134
}
135+
136+
func MergeWithResolved(originalTemplate, resolvedConfig []byte) ([]byte, error) {
137+
documents := fmt.Sprintf("%s\n---\n%s", string(originalTemplate), string(resolvedConfig))
138+
expression := "select(document_index == 0) * select(document_index == 1)"
139+
140+
return EvaluateExpression(expression, []byte(documents))
141+
}

0 commit comments

Comments
 (0)