aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/file.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-12 04:34:50 +0900
committerOphestra <cat@gensokyo.uk>2026-01-12 04:34:50 +0900
commit610572d0e6a6edfe3c2ffd1bfcca1396cad6818f (patch)
tree9fed46f6f3075b8391b6ab0891880b7f539069aa /internal/pkg/file.go
parent29951c51749f1c3f5ca96488bff6eee247c03dc7 (diff)
internal/pkg: optionally named static file
These are generally for generating configuration files or build scripts, naming them is quite useful. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/file.go')
-rw-r--r--internal/pkg/file.go23
1 files changed, 21 insertions, 2 deletions
diff --git a/internal/pkg/file.go b/internal/pkg/file.go
index fdff7351..98b8eee6 100644
--- a/internal/pkg/file.go
+++ b/internal/pkg/file.go
@@ -3,6 +3,7 @@ package pkg
import (
"context"
"crypto/sha512"
+ "fmt"
)
// A fileArtifact is an [Artifact] that cures into data known ahead of time.
@@ -10,10 +11,28 @@ type fileArtifact []byte
var _ KnownChecksum = fileArtifact{}
+// fileArtifactNamed embeds fileArtifact alongside a caller-supplied name.
+type fileArtifactNamed struct {
+ fileArtifact
+ // Caller-supplied user-facing reporting name.
+ name string
+}
+
+var _ fmt.Stringer = fileArtifactNamed{}
+
+// String returns the caller-supplied reporting name.
+func (a fileArtifactNamed) String() string { return a.name }
+
// NewFile returns a [File] that cures into a caller-supplied byte slice.
//
-// Caller must not modify data after NewBin returns.
-func NewFile(data []byte) File { return fileArtifact(data) }
+// Caller must not modify data after NewFile returns.
+func NewFile(name string, data []byte) File {
+ f := fileArtifact(data)
+ if name != "" {
+ return fileArtifactNamed{f, name}
+ }
+ return f
+}
// Kind returns the hardcoded [Kind] constant.
func (a fileArtifact) Kind() Kind { return KindFile }