29 lines
523 B
Go
29 lines
523 B
Go
|
package core
|
||
|
|
||
|
import (
|
||
|
"os/exec"
|
||
|
"regexp"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
sh = regexp.MustCompile("\\{([^\\}]+)\\}")
|
||
|
)
|
||
|
|
||
|
func Process(source string) string {
|
||
|
source = sh.ReplaceAllStringFunc(source, func(match string) string {
|
||
|
cmd := sh.FindStringSubmatch(match)[1]
|
||
|
args := strings.Fields(cmd)
|
||
|
shellArgs := []string{"-c", strings.Join(args, " ")}
|
||
|
output, err := exec.Command("sh", shellArgs...).CombinedOutput()
|
||
|
|
||
|
if err != nil {
|
||
|
return err.Error()
|
||
|
}
|
||
|
|
||
|
return strings.Trim(string(output), "\n")
|
||
|
})
|
||
|
|
||
|
return source
|
||
|
}
|