package utils

import (
	"gitee.ltd/lxh/logger/log"
	"html/template"
	"os"
)

type templateUtils struct{}

func Template() templateUtils {
	return templateUtils{}
}

// Parse
// @description: 解析指定模板文件
// @receiver templateUtils
// @param filepath
// @return parseTemplate
// @return err
func (templateUtils) Parse(filepath string) (parseTemplate *template.Template, err error) {
	file, err := os.ReadFile(filepath)
	if err != nil {
		return
	}

	parseTemplate, err = template.New("wg.conf").Parse(string(file))
	return
}

// Execute
// @description: 序列化数据到文件中
// @receiver templateUtils
// @param fromTemplate
// @param data
// @param filePath
// @return err
func (templateUtils) Execute(fromTemplate *template.Template, data any, filePath string) (err error) {
	wg0Conf, err := os.Create(filePath)
	if err != nil {
		log.Errorf("创建文件[%s]失败: %v", filePath, err.Error())
		return
	}

	defer func() {
		if err = wg0Conf.Close(); err != nil {
			log.Errorf("关闭文件[%s]失败: %v", filePath, err.Error())
			return
		}
	}()

	return fromTemplate.Execute(wg0Conf, data)
}