From 2b28ee919614d5ddaceda26ce488a0ca4c851cb3 Mon Sep 17 00:00:00 2001 From: ewy Date: Wed, 29 Apr 2026 01:30:12 +0200 Subject: simplify the contracts --- runner/gnumake/make.go | 9 +++++++-- runner/gnumake/target.go | 12 ++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) (limited to 'runner/gnumake') 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" } -- cgit v1.3.1