diff options
Diffstat (limited to 'api')
| -rw-r--r-- | api/api.go | 13 | ||||
| -rw-r--r-- | api/options/option.go | 12 |
2 files changed, 22 insertions, 3 deletions
@@ -5,6 +5,7 @@ import ( "codeberg.org/snonux/gonf/internal/resource/dir" "codeberg.org/snonux/gonf/internal/resource/file" "codeberg.org/snonux/gonf/internal/resource/link" + "codeberg.org/snonux/gonf/internal/resource/pkg" ) // File creates a file resource. @@ -37,6 +38,12 @@ func NoLink(path string, opts ...options.Option) Resource { return link.Absent(path, opts...) } -// func Package(name string, ...options.Options) Resource { -// return pkg.Present(name, opts...) -// } +// Package creates a package resource. +func Package(name string, opts ...options.Option) Resource { + return pkg.Present(name, opts...) +} + +// NoPackage creates a package resource that is ensured to be absent. +func NoPackage(name string, opts ...options.Option) Resource { + return pkg.Absent(name, opts...) +} diff --git a/api/options/option.go b/api/options/option.go index fcffccd..1d9b931 100644 --- a/api/options/option.go +++ b/api/options/option.go @@ -21,6 +21,7 @@ type ( FileModed interface{ SetFileMode(os.FileMode) } Prunable interface{ SetPrune() } Absentable interface{ SetAbsent() } + Latestable interface{ SetLatest() } Linkable interface { SetSymlink(target string) SetHardlink(target string) @@ -117,6 +118,17 @@ var IsAbsent = func(t any) { func IsAbsentFunc() Option { return IsAbsent } +// IsLatest marks the package resource to be updated to the latest version. +var IsLatest = func(t any) { + r, ok := t.(Latestable) + if !ok { + log.Fatalf("%T does not support IsLatest", t) + } + r.SetLatest() +} + +func IsLatestFunc() Option { return IsLatest } + // WithSymlink makes the resource a symbolic link pointing at target. func WithSymlink(target string) Option { return func(t any) { |
