Files
dengitool/scriptsRunner.go
2026-05-22 18:22:43 +03:00

47 lines
1.1 KiB
Go

package main
import (
"os"
"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{}
if folderExists("./runners") {
entries, err := os.ReadDir("./runners/")
if err == nil {
for _, e := range entries {
if !e.IsDir() && strings.HasSuffix(e.Name(), ".yml") {
runner, err := os.ReadFile("./runners/" + 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
}