/
template.go
44 lines (40 loc) · 1.03 KB
/
template.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
"github.com/flosch/pongo2"
"io/ioutil"
"log"
"net/http"
"path/filepath"
"strings"
)
func _getRunnerTpl() string {
var runnerTpl = "https://tpl.cvtron.xyz/runners/runner.tpl"
resp, err := http.Get(runnerTpl)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
return string(body)
}
func renderRunnerTpl(localFolder string, mysolvers solvers) {
tpl, err := pongo2.FromString(_getRunnerTpl())
if err != nil {
log.Fatal(err)
}
for _, solver := range mysolvers.Solvers {
writeRunner(tpl, localFolder, solver)
}
}
func writeRunner(tpl *pongo2.Template, localFolder string, Solver solver) {
filename := "runner_" + Solver.Name + ".py"
fileFullPath := filepath.Join(localFolder, filename)
tplContext := strings.Split(Solver.Class, "/")
out, err := tpl.Execute(pongo2.Context{"Package": tplContext[0], "Filename": tplContext[1], "Classname": tplContext[2]})
if err != nil {
log.Fatal(err)
}
err = ioutil.WriteFile(fileFullPath, []byte(out), 0644)
if err != nil {
log.Fatal(err)
}
}