83 lines
1.5 KiB
Go
83 lines
1.5 KiB
Go
|
package lib
|
||
|
|
||
|
import (
|
||
|
"bufio"
|
||
|
"bytes"
|
||
|
"embed"
|
||
|
"log"
|
||
|
"os"
|
||
|
"strings"
|
||
|
"text/template"
|
||
|
)
|
||
|
|
||
|
//go:embed tmpl/*
|
||
|
var content embed.FS
|
||
|
|
||
|
var funcMap = template.FuncMap{
|
||
|
"fieldName": fieldName,
|
||
|
}
|
||
|
|
||
|
func fieldName(name string) (res string) {
|
||
|
res = strings.Trim(name, " ")
|
||
|
if res == "" {
|
||
|
log.Fatal("Shoudl be set name for field")
|
||
|
}
|
||
|
asRunes := []rune(res)
|
||
|
|
||
|
asRunes[0] = []rune(strings.ToUpper(string([]rune(res)[0])))[0]
|
||
|
res = string(asRunes)
|
||
|
i := strings.Index(res, "_")
|
||
|
for i != -1 {
|
||
|
asRunes := []rune(res)
|
||
|
if i >= len(res) {
|
||
|
break
|
||
|
}
|
||
|
asRunes[i+1] = []rune(strings.ToUpper(string(asRunes[i+1])))[0]
|
||
|
asRunes = append(asRunes[:i-1], asRunes[i+1:]...)
|
||
|
res = string(asRunes)
|
||
|
i = strings.Index(res, "_")
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func WriteTmplFile(filename string, outname string) error {
|
||
|
if buff, err := content.ReadFile(filename); err != nil {
|
||
|
return err
|
||
|
} else {
|
||
|
if err = os.WriteFile(outname, buff, 0755); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Использование шаблона
|
||
|
func PrepareTmplFile(filename string, data interface{}, outname string) (err error) {
|
||
|
var (
|
||
|
buff []byte
|
||
|
)
|
||
|
if buff, err = content.ReadFile(filename); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
var (
|
||
|
tmp string
|
||
|
tmpl *template.Template
|
||
|
)
|
||
|
if tmp, err = RandomHex(4); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
if tmpl, err = template.New(tmp).Funcs(funcMap).Parse(string(buff)); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
var b bytes.Buffer
|
||
|
w := bufio.NewWriter(&b)
|
||
|
|
||
|
if err = tmpl.Execute(w, data); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
w.Flush()
|
||
|
os.WriteFile(outname, b.Bytes(), 0755)
|
||
|
return
|
||
|
}
|