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

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
}