From 28e43c7356d796e18d2f818d100078c5aa31c14c Mon Sep 17 00:00:00 2001 From: ewy Date: Wed, 29 Apr 2026 01:59:23 +0200 Subject: add executable runner --- runner/exc/runner.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 runner/exc/runner.go (limited to 'runner/exc/runner.go') diff --git a/runner/exc/runner.go b/runner/exc/runner.go new file mode 100644 index 0000000..4b0c2e6 --- /dev/null +++ b/runner/exc/runner.go @@ -0,0 +1,42 @@ +package exc + +import ( + "io/fs" + "path/filepath" + "pik/identity" + "pik/model" + "pik/runner" + "pik/spool" +) + +func (e *exc) Hydrate(target model.Target) (model.HydratedTarget, error) { + return &Hydrated{ + BaseHydration: &runner.BaseHydration[*Executable]{ + Self: target.(*Executable), + }, + }, nil +} + +func (e *exc) Wants(fs fs.FS, file string, entry fs.DirEntry) (bool, error) { + if entry.IsDir() { + return false, nil + } + info, err := entry.Info() + if err != nil { + spool.Warn("%v\n", err) + } + return info.Mode()&0100 != 0, nil +} + +func (e *exc) CreateTarget(fs fs.FS, source string, file string, entry fs.DirEntry) (model.Target, error) { + _, filename := filepath.Split(file) + return &Executable{ + + BaseTarget: runner.BaseTarget{ + Identity: identity.New(entry.Name()), + MyTags: model.TagsFromFilename(filename), + MySub: runner.SubFromFile(file), + }, + Path: filepath.Join(source, file), + }, nil +} -- cgit v1.3.1