summaryrefslogtreecommitdiff
path: root/api/option
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-07-06 23:05:48 +0300
committerPaul Buetow <paul@buetow.org>2026-07-06 23:05:48 +0300
commit5600bedb927e291e2e78e6140de256e1a1d4475c (patch)
treeaf19c6b484135afed332a8e3fcda7e8ded5ac4b8 /api/option
parentf7498c9ae626b9ab654fe6eb736e19c62cf5d38d (diff)
refactor
Diffstat (limited to 'api/option')
-rw-r--r--api/option/option.go140
1 files changed, 0 insertions, 140 deletions
diff --git a/api/option/option.go b/api/option/option.go
deleted file mode 100644
index b5d2531..0000000
--- a/api/option/option.go
+++ /dev/null
@@ -1,140 +0,0 @@
-// Package option provides interface-based, resource-agnostic configuration
-// options shared by the file, dir, and link resource packages.
-package option
-
-import (
- "log"
- "os"
-)
-
-// Option configures a resource. It is applied to the concrete resource value
-// (e.g. *file.File) during construction.
-type Option func(any)
-
-// Capability interfaces. A resource implements only the setters it supports.
-type (
- Owner interface{ SetOwner(string) }
- Grouped interface{ SetGroup(string) }
- Moded interface{ SetMode(os.FileMode) }
- Sourced interface{ SetSource(string) }
- Contented interface{ SetContent(string) }
- FileModed interface{ SetFileMode(os.FileMode) }
- Prunable interface{ SetPrune() }
- Absentable interface{ SetAbsent() }
- Linkable interface {
- SetSymlink(target string)
- SetHardlink(target string)
- }
-)
-
-// WithOwner sets the owning user of the resource.
-func WithOwner(owner string) Option {
- return func(t any) {
- r, ok := t.(Owner)
- if !ok {
- log.Fatalf("%T does not support WithOwner", t)
- }
- r.SetOwner(owner)
- }
-}
-
-// WithGroup sets the owning group of the resource.
-func WithGroup(group string) Option {
- return func(t any) {
- r, ok := t.(Grouped)
- if !ok {
- log.Fatalf("%T does not support WithGroup", t)
- }
- r.SetGroup(group)
- }
-}
-
-// WithMode sets the resource's own file mode.
-func WithMode(mode os.FileMode) Option {
- return func(t any) {
- r, ok := t.(Moded)
- if !ok {
- log.Fatalf("%T does not support WithMode", t)
- }
- r.SetMode(mode)
- }
-}
-
-// WithSource sets the source path the resource is populated from.
-func WithSource(source string) Option {
- return func(t any) {
- r, ok := t.(Sourced)
- if !ok {
- log.Fatalf("%T does not support WithSource", t)
- }
- r.SetSource(source)
- }
-}
-
-// WithContent sets literal content for the resource.
-func WithContent(content string) Option {
- return func(t any) {
- r, ok := t.(Contented)
- if !ok {
- log.Fatalf("%T does not support WithContent", t)
- }
- r.SetContent(content)
- }
-}
-
-// WithFileMode sets the mode applied to regular files copied from a source
-// tree (distinct from the resource's own mode).
-func WithFileMode(mode os.FileMode) Option {
- return func(t any) {
- r, ok := t.(FileModed)
- if !ok {
- log.Fatalf("%T does not support WithFileMode", t)
- }
- r.SetFileMode(mode)
- }
-}
-
-// WithPrune enables reconciliation of extra destination entries during a
-// source copy, and recursive removal during IsAbsent().
-func WithPrune() Option {
- return func(t any) {
- r, ok := t.(Prunable)
- if !ok {
- log.Fatalf("%T does not support WithPrune", t)
- }
- r.SetPrune()
- }
-}
-
-// IsAbsent marks the resource for removal.
-func IsAbsent() Option {
- return func(t any) {
- r, ok := t.(Absentable)
- if !ok {
- log.Fatalf("%T does not support IsAbsent", t)
- }
- r.SetAbsent()
- }
-}
-
-// WithSymlink makes the resource a symbolic link pointing at target.
-func WithSymlink(target string) Option {
- return func(t any) {
- r, ok := t.(Linkable)
- if !ok {
- log.Fatalf("%T does not support WithSymlink", t)
- }
- r.SetSymlink(target)
- }
-}
-
-// WithHardlink makes the resource a hard link pointing at target.
-func WithHardlink(target string) Option {
- return func(t any) {
- r, ok := t.(Linkable)
- if !ok {
- log.Fatalf("%T does not support WithHardlink", t)
- }
- r.SetHardlink(target)
- }
-}