summaryrefslogtreecommitdiff
path: root/runner/js/indexer.go
diff options
context:
space:
mode:
Diffstat (limited to 'runner/js/indexer.go')
-rw-r--r--runner/js/indexer.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/runner/js/indexer.go b/runner/js/indexer.go
new file mode 100644
index 0000000..8a2a6b2
--- /dev/null
+++ b/runner/js/indexer.go
@@ -0,0 +1,39 @@
+package js
+
+import (
+ "encoding/json"
+ "errors"
+ "github.com/ewy1/pik/model"
+ "io/fs"
+ "os"
+ "path/filepath"
+)
+
+type Package struct {
+ Scripts map[string]string `json:"scripts"`
+}
+
+func (n *js) Index(path string, f fs.FS, runners []model.Runner) ([]model.Target, error) {
+ p := &Package{}
+ // are there any other package.jsons? i hope not, because i don't know them
+ content, err := os.ReadFile(filepath.Join(path, "package.json"))
+ if errors.Is(err, fs.ErrNotExist) {
+ return nil, nil
+ } else if err != nil {
+ return nil, err
+ }
+ err = json.Unmarshal(content, p)
+ if err != nil {
+ return nil, err
+ }
+
+ var targets []model.Target
+ if n.Npm == "" {
+ return nil, NoNpm
+ }
+ for k, s := range p.Scripts {
+ targets = append(targets, n.CreateRun(k, s))
+ }
+
+ return targets, nil
+}