grlogs/function.go
2020-04-01 11:52:02 +08:00

78 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package grlogs
import (
"crypto/md5"
"encoding/hex"
"fmt"
"io/ioutil"
"math/rand"
"os"
"path"
"reflect"
"runtime"
"strings"
"time"
)
type Empty struct {}
//传入一个字符串返回一个加密后的md5
func Md5(str string) string {
data := []byte(str)
has := md5.Sum(data)
md5str := fmt.Sprintf("%x", has) //将[]byte转成16进制
return md5str
}
func Md5File(filePath string) string {
hash := md5.New()
data, _ := ioutil.ReadFile(filePath)
hash.Write([]byte(data))
md5str := hex.EncodeToString(hash.Sum(nil))
return md5str
}
func GetPackageName() string {
packpath := reflect.TypeOf(Empty{}).PkgPath()
if idx := strings.Index(packpath, "/"); idx > 0 {
return packpath[:idx]
} else {
return packpath
}
}
func GetCwd(filepath ...string) string {
_, filename1, _, _ := runtime.Caller(0)
filename2, _ := os.Getwd()
if !strings.HasSuffix(filename2, GetPackageName()) {
paths := append([]string{path.Dir(filename1), "/../../"}, filepath...)
return path.Join(paths...)
} else {
paths := append([]string{filename2, "/"}, filepath...)
return path.Join(paths...)
}
}
func SetCwd() error {
_, filename1, _, _ := runtime.Caller(0)
filename2, _ := os.Getwd()
if !strings.HasSuffix(filename2, GetPackageName()) {
paths := append([]string{path.Dir(filename1), "/../../"})
return os.Chdir(path.Join(paths...))
} else {
paths := append([]string{filename2, "/"})
return os.Chdir(path.Join(paths...))
}
}
func RandString(length int) string {
str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
bytes := []byte(str)
result := []byte{}
r := rand.New(rand.NewSource(time.Now().UnixNano()))
for i := 0; i < length; i++ {
result = append(result, bytes[r.Intn(len(bytes))])
}
return string(result)
}