summaryrefslogtreecommitdiff
path: root/model/target.go
diff options
context:
space:
mode:
Diffstat (limited to 'model/target.go')
-rw-r--r--model/target.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/model/target.go b/model/target.go
index b503381..683ab8f 100644
--- a/model/target.go
+++ b/model/target.go
@@ -4,21 +4,31 @@ import (
"os/exec"
)
+// Target is something we want to run
type Target interface {
Matches
+ // Create creates the exec.Cmd from itself. The model.Source this target is in is also available.
Create(s *Source) *exec.Cmd
Sub() []string
+ // Label will be used for its label in the menu
Label() string
Hydrate(src *Source) (HydratedTarget, error)
Tags() Tags
+ // ShortestId returns a short version of its identity
ShortestId() string
+ // Visible should return whether this target can be seen in the menu
Visible() bool
+ // Invocation should return the "canonical invocation": simple to remember
Invocation(src *Source) []string
}
+// HydratedTarget is something we want to show in the menu
type HydratedTarget interface {
Target
+ // Icon is some text which will be used as an icon
Icon() string
+ // Description is a one-line description of what this does
Description() string
+ // Target returns our inner target
Target() Target
}