diff options
Diffstat (limited to 'runner/gnumake')
| -rw-r--r-- | runner/gnumake/make.go | 9 | ||||
| -rw-r--r-- | runner/gnumake/target.go | 12 |
2 files changed, 15 insertions, 6 deletions
diff --git a/runner/gnumake/make.go b/runner/gnumake/make.go index 96e7efb..e04f927 100644 --- a/runner/gnumake/make.go +++ b/runner/gnumake/make.go @@ -4,6 +4,7 @@ import ( "errors" "io/fs" "os/exec" + "path/filepath" "pik/identity" "pik/model" "pik/runner" @@ -13,10 +14,13 @@ import ( ) type gnumake struct { - path string + path string + files map[string]string } -var Indexer = &gnumake{} +var Indexer = &gnumake{ + files: make(map[string]string), +} var Makefiles = []string{ "Makefile", @@ -32,6 +36,7 @@ func (m *gnumake) Index(path string, f fs.FS, _ []model.Runner) ([]model.Target, makefile := "" for _, e := range entries { if !e.IsDir() && slices.Contains(Makefiles, strings.ToLower(e.Name())) { + m.files[path] = filepath.Join(path, e.Name()) content, err := fs.ReadFile(f, e.Name()) if err != nil { return nil, err diff --git a/runner/gnumake/target.go b/runner/gnumake/target.go index 2f909bb..bde09f8 100644 --- a/runner/gnumake/target.go +++ b/runner/gnumake/target.go @@ -12,6 +12,10 @@ type Target struct { Description string } +func (j *Target) File(src *model.Source) string { + return Indexer.files[src.Path] +} + func (j *Target) Create(s *model.Source) *exec.Cmd { return exec.Command(Indexer.path, j.Identity.Full) } @@ -38,10 +42,10 @@ type Hydrated struct { runner.BaseHydration[*Target] } -func (h *Hydrated) Icon() string { - return "\uE673" +func (h *Hydrated) Description(src *model.HydratedSource) string { + return h.Self.Description } -func (h *Hydrated) Description() string { - return h.BaseTarget.Description +func (h *Hydrated) Icon() string { + return "\uE673" } |
