|
8 | 8 | "fmt" |
9 | 9 | "io" |
10 | 10 | "os" |
11 | | - "reflect" |
12 | 11 | "strings" |
13 | 12 |
|
14 | 13 | _ "github.com/OpenListTeam/OpenList/v4/drivers" |
@@ -69,15 +68,33 @@ func writeFile(name string, data interface{}) { |
69 | 68 | log.Errorf("failed to unmarshal json: %+v", err) |
70 | 69 | return |
71 | 70 | } |
72 | | - if reflect.DeepEqual(oldData, newData) { |
| 71 | + if mergeJson(newData, oldData) { |
73 | 72 | log.Infof("%s.json no changed, skip", name) |
74 | 73 | } else { |
75 | 74 | log.Infof("%s.json changed, update file", name) |
76 | 75 | //log.Infof("old: %+v\nnew:%+v", oldData, data) |
77 | | - utils.WriteJsonToFile(fmt.Sprintf("lang/%s.json", name), newData, true) |
| 76 | + utils.WriteJsonToFile(fmt.Sprintf("lang/%s.json", name), oldData, true) |
78 | 77 | } |
79 | 78 | } |
80 | 79 |
|
| 80 | +func mergeJson(source, target map[string]interface{}) bool { |
| 81 | + equal := true |
| 82 | + for k, v := range source { |
| 83 | + tgtV, tgtOk := target[k] |
| 84 | + if !tgtOk { |
| 85 | + equal = false |
| 86 | + target[k] = v |
| 87 | + } else { |
| 88 | + srcMap, srcIsMap := v.(map[string]interface{}) |
| 89 | + tgtMap, tgtIsMap := tgtV.(map[string]interface{}) |
| 90 | + if srcIsMap && tgtIsMap { |
| 91 | + equal = mergeJson(srcMap, tgtMap) && equal |
| 92 | + } |
| 93 | + } |
| 94 | + } |
| 95 | + return equal |
| 96 | +} |
| 97 | + |
81 | 98 | func generateDriversJson() { |
82 | 99 | drivers := make(Drivers) |
83 | 100 | drivers["drivers"] = make(KV[interface{}]) |
|
0 commit comments