49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
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
|
|
}
|