forked from hidu/mysql-schema-sync
/
util.go
76 lines (67 loc) · 1.75 KB
/
util.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package internal
import (
"bytes"
"encoding/json"
"html"
"log"
"os"
"regexp"
"strings"
)
// Version 版本号,格式:更新日期(8位).更新次数(累加)
const Version = "20220925.3"
// AppURL site
const AppURL = "https://github.com/CrazyZard/mysql-schema-sync/"
const timeFormatStd string = "2006-01-02 15:04:05"
// loadJsonFile load json
func loadJSONFile(jsonPath string, val any) error {
bs, err := os.ReadFile(jsonPath)
if err != nil {
return err
}
lines := strings.Split(string(bs), "\n")
var bf bytes.Buffer
for _, line := range lines {
lineNew := strings.TrimSpace(line)
if (len(lineNew) > 0 && lineNew[0] == '#') || (len(lineNew) > 1 && lineNew[0:2] == "//") {
continue
}
bf.WriteString(lineNew)
}
return json.Unmarshal(bf.Bytes(), &val)
}
func inStringSlice(str string, strSli []string) bool {
for _, v := range strSli {
if str == v {
return true
}
}
return false
}
func simpleMatch(patternStr string, str string, msg ...string) bool {
str = strings.TrimSpace(str)
patternStr = strings.TrimSpace(patternStr)
if patternStr == str {
log.Println("simple_match:suc,equal", msg, "patternStr:", patternStr, "str:", str)
return true
}
pattern := "^" + strings.ReplaceAll(patternStr, "*", `.*`) + "$"
match, err := regexp.MatchString(pattern, str)
if err != nil {
log.Println("simple_match:error", msg, "patternStr:", patternStr, "pattern:", pattern, "str:", str, "err:", err)
}
// if match {
// log.Println("simple_match:suc", msg, "patternStr:", patternStr, "pattern:", pattern, "str:", str)
// }
return match
}
func htmlPre(str string) string {
return "<pre>" + html.EscapeString(str) + "</pre>"
}
func dsnSort(dsn string) string {
i := strings.Index(dsn, "@")
if i < 1 {
return dsn
}
return dsn[i+1:]
}