1 Star 1 Fork 0

amuluze / amutool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
md5_change.go 2.09 KB
一键复制 编辑 原始数据 按行查看 历史
jialong.wang 提交于 2023-04-20 16:21 . feat: update readme file
// Package iohelper
// Date: 2023/3/28 17:14
// Author: Amu
// Description:
package iohelper
import (
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"os"
)
type CheckTextMd5 struct {
fileName string
fileText string
versionFile string
}
func textMD5(s string) string {
md5Handle := md5.New()
_, _ = io.WriteString(md5Handle, s)
return hex.EncodeToString(md5Handle.Sum(nil))
}
// NewCheckTextMd5 fileName 和 fileText 人选一个传入, md5Name 是 md5 文件名称
func NewCheckTextMd5(fileName, fileText, md5FilePath, md5Name string) *CheckTextMd5 {
if fileName == "" && fileText == "" {
panic("NewCheckTextMd5 fail, fileName fileText both null")
}
var namePrefix string
if fileText != "" {
namePrefix = textMD5(fileText)
} else {
namePrefix, _ = FileMD5(fileName)
}
versionFile := fmt.Sprint(md5FilePath, "/.", namePrefix, "-", md5Name)
fmt.Printf("version file: %v\n", versionFile)
err := EnsureDir(versionFile)
if err != nil {
panic("create template md5 file dir failure")
}
return &CheckTextMd5{
fileName: fileName,
fileText: fileText,
versionFile: versionFile,
}
return nil
}
func (s *CheckTextMd5) Change() bool {
var err error
versionExist := FileExist(s.versionFile)
var templateFileMd5 string
var newTemplateFileMd5 string
templateFileChanged := false
if versionExist {
templateFIleByte, _ := os.ReadFile(s.versionFile)
templateFileMd5 = string(templateFIleByte)
if s.fileText != "" {
newTemplateFileMd5 = textMD5(s.fileText)
} else {
newTemplateFileMd5, _ = FileMD5(s.fileName)
}
if newTemplateFileMd5 != templateFileMd5 && newTemplateFileMd5 != "" {
templateFileChanged = true
}
} else {
templateFileChanged = true
err = s.Write()
}
if err != nil {
panic("template change md5 get failure")
}
return templateFileChanged
}
func (s *CheckTextMd5) Write() error {
var templateFileMd5 string
if s.fileText != "" {
templateFileMd5 = textMD5(s.fileText)
} else {
templateFileMd5, _ = FileMD5(s.fileName)
}
fmt.Printf("template file md5: %v\n", templateFileMd5)
return os.WriteFile(s.versionFile, []byte(templateFileMd5), 0640)
}
Go
1
https://gitee.com/amuluze/amutool.git
git@gitee.com:amuluze/amutool.git
amuluze
amutool
amutool
6d4b89917063

搜索帮助

53164aa7 5694891 3bd8fe86 5694891