package main import ( "os" "path/filepath" "strings" "gopkg.in/yaml.v3" ) type ScriptRunner struct { Name string `yaml:"name"` Extension string `yaml:"extension"` Runner string `yaml:"runner"` } func GetScriptsRunners() []ScriptRunner { runners := []ScriptRunner{} runnersDir := runnersFolder() if folderExists(runnersDir) { entries, err := os.ReadDir(runnersDir) if err == nil { for _, e := range entries { if !e.IsDir() && strings.HasSuffix(e.Name(), ".yml") { runner, err := os.ReadFile(filepath.Join(runnersDir, e.Name())) if err == nil { var rnr ScriptRunner if err := yaml.Unmarshal(runner, &rnr); err == nil { runners = append(runners, rnr) } } } } } } defaultRunners := []ScriptRunner{ {Name: "Windows Executable", Extension: ".exe", Runner: "%v"}, {Name: "PowerShell Script", Extension: ".ps1", Runner: "powershell -NoProfile -ExecutionPolicy Bypass -File %v"}, {Name: "Python", Extension: ".py", Runner: "python %v"}, {Name: "CMD Batch File", Extension: ".bat", Runner: "%v"}, {Name: "NodeJS", Extension: ".js", Runner: "node %v"}, } runners = append(runners, defaultRunners...) return runners }