Skip to content

Commit

Permalink
fix: Ensure default template data when reading .chezmoidata in subdir
Browse files Browse the repository at this point in the history
  • Loading branch information
twpayne committed Sep 4, 2023
1 parent 153ff48 commit 46e13ed
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
4 changes: 3 additions & 1 deletion internal/chezmoi/sourcestate.go
Expand Up @@ -114,6 +114,7 @@ type SourceState struct {
defaultTemplateDataFunc func() map[string]any
templateDataOnly bool
readTemplateData bool
defaultTemplateData map[string]any
userTemplateData map[string]any
priorityTemplateData map[string]any
scriptEnv []string
Expand Down Expand Up @@ -1289,9 +1290,10 @@ func (s *SourceState) TemplateData() map[string]any {
if s.templateData == nil {
s.templateData = make(map[string]any)
if s.defaultTemplateDataFunc != nil {
RecursiveMerge(s.templateData, s.defaultTemplateDataFunc())
s.defaultTemplateData = s.defaultTemplateDataFunc()
s.defaultTemplateDataFunc = nil
}
RecursiveMerge(s.templateData, s.defaultTemplateData)
RecursiveMerge(s.templateData, s.userTemplateData)
RecursiveMerge(s.templateData, s.priorityTemplateData)
}
Expand Down
16 changes: 16 additions & 0 deletions internal/cmd/applycmd_test.go
Expand Up @@ -230,3 +230,19 @@ func TestIssue3206(t *testing.T) {
assert.NoError(t, newTestConfig(t, fileSystem).execute([]string{"apply"}))
})
}

func TestIssue3216(t *testing.T) {
chezmoitest.WithTestFS(t, map[string]any{
"/home/user": map[string]any{
".local/share/chezmoi": map[string]any{
".chezmoiignore": "",
"dot_config/private_expanso/match": map[string]any{
".chezmoidata.yaml": "",
"greek.yml.tmpl": "{{ .chezmoi.os }}",
},
},
},
}, func(fileSystem vfs.FS) {
assert.NoError(t, newTestConfig(t, fileSystem).execute([]string{"apply"}))
})
}

0 comments on commit 46e13ed

Please sign in to comment.