diff options
| author | ewy <ewy0@protonmail.com> | 2026-05-02 17:24:39 +0200 |
|---|---|---|
| committer | ewy <ewy0@protonmail.com> | 2026-05-02 17:24:39 +0200 |
| commit | 65d273d0da5c1a742425e899f053bbee0fef0600 (patch) | |
| tree | 2046a69020ea5dc4f0b011ff836fb0945d22233f | |
| parent | 1b61ac20cf226472964111156d64d61ca6f7ac60 (diff) | |
add docs
| -rw-r--r-- | modes.go | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -11,8 +11,18 @@ import ( "os" ) +// ModeMap maps flags to specific operation modes type ModeMap[T any] map[*bool]T +// Continue can be returned as an error to continue program flow +var Continue = errors.New("not an error; continue flow") + +// Traverse checks the entries of the map. If any flags are set on, +// run that mode. If Continue is returned, it's non-exclusive. Otherwise, +// we quit after one mode. +// +// `then` should simply be the method call (necessary due to generics) +// no additional error handling is required func (m ModeMap[T]) Traverse(then func(in T) error) { for enabled, mode := range m { if !*enabled { @@ -30,6 +40,8 @@ func (m ModeMap[T]) Traverse(then func(in T) error) { } } +// statelessModes are program modes which do not require state to operate. +// like --version and --completion var statelessModes = ModeMap[func() error]{ flags.Version: func() error { _, err := spool.Print("%s\n", version) @@ -41,8 +53,7 @@ var statelessModes = ModeMap[func() error]{ }, } -var Continue = errors.New("not an error; continue flow") - +// statefulModes are program modes which require a built state to be executed var statefulModes = ModeMap[func(st *model.State) error]{ flags.List: func(st *model.State) error { for _, s := range st.Sources { @@ -55,6 +66,7 @@ var statefulModes = ModeMap[func(st *model.State) error]{ }, } +// selectionModes are program modes which require a selected target, through menu or args var selectionModes = ModeMap[func(st *model.State, src *model.Source, t model.Target) error]{ flags.Edit: func(st *model.State, src *model.Source, t model.Target) error { return run.Edit(t, src) |
