Skip to content

Commit 9d80602

Browse files
committed
commands: migrate to generic.OptionFunc
1 parent 1ecbe5a commit 9d80602

File tree

7 files changed

+17
-25
lines changed

7 files changed

+17
-25
lines changed

internal/commands/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (co clientOptions) make() (clientSettings, error) {
9696
settings := clientSettings{
9797
exitInterval: exitIntervalDefault,
9898
}
99-
if err := applyOptions(&settings, co...); err != nil {
99+
if err := generic.ApplyOptions(&settings, co...); err != nil {
100100
return clientSettings{}, err
101101
}
102102
if err := settings.fillDefaults(); err != nil {

internal/commands/daemon.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ func (do daemonOptions) make() (daemonSettings, error) {
175175
},
176176
permissions: apiPermissionsDefault,
177177
}
178-
if err := applyOptions(&settings, do...); err != nil {
178+
if err := generic.ApplyOptions(&settings, do...); err != nil {
179179
return daemonSettings{}, err
180180
}
181181
if settings.serverMaddrs == nil {

internal/commands/flag.go

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ import (
2222
type (
2323
optionsReference[
2424
OS optionSlice[OT, T],
25-
OT optionFunc[T],
25+
OT generic.OptionFunc[T],
2626
T any,
2727
] interface {
2828
*OS
2929
}
30-
optionSlice[OT optionFunc[T], T any] interface {
30+
optionSlice[
31+
OT generic.OptionFunc[T],
32+
T any,
33+
] interface {
3134
~[]OT
3235
}
33-
optionFunc[T any] interface {
34-
~func(*T) error
35-
}
3636
sharedSettings struct {
3737
verbose bool
3838
}
@@ -82,18 +82,9 @@ const (
8282
permSymText = 't'
8383
)
8484

85-
func makeWithOptions[OT optionFunc[T], T any](options ...OT) (T, error) {
85+
func makeWithOptions[OT generic.OptionFunc[T], T any](options ...OT) (T, error) {
8686
var settings T
87-
return settings, applyOptions(&settings, options...)
88-
}
89-
90-
func applyOptions[OT optionFunc[T], T any](settings *T, options ...OT) error {
91-
for _, apply := range options {
92-
if err := apply(settings); err != nil {
93-
return err
94-
}
95-
}
96-
return nil
87+
return settings, generic.ApplyOptions(&settings, options...)
9788
}
9889

9990
func (so *sharedOptions) BindFlags(flagSet *flag.FlagSet) {
@@ -519,7 +510,7 @@ func underline(text string) string {
519510
func flagSetFunc[
520511
OSR optionsReference[OS, OT, ST],
521512
OS optionSlice[OT, ST],
522-
OT optionFunc[ST],
513+
OT generic.OptionFunc[ST],
523514
setterFn func(VT, *ST) error,
524515
ST, VT any,
525516
](flagSet *flag.FlagSet, name, usage string,
@@ -545,7 +536,7 @@ func funcFlag[T any](flagSet *flag.FlagSet, name, usage string, fn func(string)
545536
func parseAndSet[
546537
OSR optionsReference[OS, OT, ST],
547538
OS optionSlice[OT, ST],
548-
OT optionFunc[ST],
539+
OT generic.OptionFunc[ST],
549540
setterFn func(VT, *ST) error,
550541
ST, VT any,
551542
](parameter string, options OSR, setter setterFn,

internal/commands/mount.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ func (mo *mountCmdOptions[HT, GT, HM, GM, HC, GC]) BindFlags(flagSet *flag.FlagS
190190

191191
func (mo mountCmdOptions[HT, GT, HM, GM, HC, GC]) make() (mountCmdSettings[HM, GM], error) {
192192
var settings mountCmdSettings[HM, GM]
193-
if err := applyOptions(&settings, mo...); err != nil {
193+
if err := generic.ApplyOptions(&settings, mo...); err != nil {
194194
return settings, err
195195
}
196196
if err := settings.clientSettings.fillDefaults(); err != nil {
@@ -375,7 +375,7 @@ func (c *Client) Mount(host filesystem.Host, fsid filesystem.ID, data [][]byte,
375375
uid: apiUIDDefault,
376376
gid: apiGIDDefault,
377377
}
378-
if err := applyOptions(&set, options...); err != nil {
378+
if err := generic.ApplyOptions(&set, options...); err != nil {
379379
return err
380380
}
381381
mounts, err := (*p9.Client)(c).Attach(mountsFileName)

internal/commands/mountpoint_fuse.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ func (fo fuseOptions) make() (fuseSettings, error) {
196196
GID: fuseGIDDefault,
197197
ReaddirPlus: readdirPlusCapible,
198198
}
199-
return settings, applyOptions(&settings, fo...)
199+
return settings, generic.ApplyOptions(&settings, fo...)
200200
}
201201

202202
func (set fuseSettings) marshal(arg string) ([]byte, error) {

internal/commands/mountpoint_ipfs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ func (no ipnsOptions) make() (ipnsSettings, error) {
239239
settings := ipnsSettings{
240240
NodeExpiry: ipnsExpiryDefault,
241241
}
242-
return settings, applyOptions(&settings, no...)
242+
return settings, generic.ApplyOptions(&settings, no...)
243243
}
244244

245245
func (set ipnsSettings) marshal(string) ([]byte, error) {

internal/commands/shutdown.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"text/tabwriter"
1010

1111
"github.com/djdv/go-filesystem-utils/internal/command"
12+
"github.com/djdv/go-filesystem-utils/internal/generic"
1213
"github.com/djdv/p9/p9"
1314
)
1415

@@ -88,7 +89,7 @@ func (so shutdownOptions) make() (shutdownSettings, error) {
8889
settings := shutdownSettings{
8990
disposition: dispositionDefault,
9091
}
91-
if err := applyOptions(&settings, so...); err != nil {
92+
if err := generic.ApplyOptions(&settings, so...); err != nil {
9293
return shutdownSettings{}, err
9394
}
9495
return settings, settings.clientSettings.fillDefaults()

0 commit comments

Comments
 (0)