From c623c4f35eb3620bad89d0a1d8f426deeb87a4b4 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Thu, 27 Mar 2025 20:03:58 -0400 Subject: [PATCH] providers/os: Add function for creating temporary files --- providers/os/os.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/providers/os/os.go b/providers/os/os.go index 938da33..3bd87eb 100644 --- a/providers/os/os.go +++ b/providers/os/os.go @@ -5,6 +5,7 @@ import "io" import "time" import "sort" import "io/fs" +import "path/filepath" import "html/template" import "git.tebibyte.media/sashakoshka/step" @@ -43,7 +44,7 @@ func (this *Provider) FuncMapFor (document *step.Document) template.FuncMap { "createDir": stat.funcCreateDir, "createDirAll": stat.funcCreateDirAll, "chmod": stat.funcChmod, - // TODO: temporary files, dirs + "createTemp": stat.funcCreateTemp, } } @@ -185,6 +186,15 @@ func (this *state) funcChmod(name string, mode fs.FileMode) error { return os.Chmod(name, mode) } +func (this *state) funcCreateTemp(dir, pattern string) (string, error) { + dir, err := this.document.Rel(dir) + if err != nil { return "", err } + file, err := os.CreateTemp(dir, pattern) + if err != nil { return "", err } + defer file.Close() + return filepath.Join(dir, file.Name()), nil +} + func sortDirEntriesByDate(entries []fs.DirEntry) { sort.Slice(entries, func(left, right int) bool{ var leftTime time.Time