feat: skip generate lang if no changes

pull/1604/head
Noah Hsu 2022-09-05 16:40:51 +08:00
parent 868a4fd49e
commit 534d8d30fc
2 changed files with 45 additions and 4 deletions

View File

@ -6,7 +6,9 @@ package cmd
import (
"fmt"
"io"
"os"
"reflect"
"strings"
_ "github.com/alist-org/alist/v3/drivers"
@ -14,6 +16,7 @@ import (
"github.com/alist-org/alist/v3/internal/conf"
"github.com/alist-org/alist/v3/internal/op"
"github.com/alist-org/alist/v3/pkg/utils"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)
@ -34,6 +37,43 @@ func convert(s string) string {
return firstUpper(ans)
}
func writeFile(name string, data interface{}) {
f, err := os.Open(fmt.Sprintf("../alist-web/src/lang/en/%s.json", name))
if err != nil {
log.Errorf("failed to open %s.json: %+v", name, err)
return
}
content, err := io.ReadAll(f)
if err != nil {
log.Errorf("failed to read %s.json: %+v", name, err)
return
}
oldData := make(map[string]interface{})
newData := make(map[string]interface{})
err = utils.Json.Unmarshal(content, &oldData)
if err != nil {
log.Errorf("failed to unmarshal %s.json: %+v", name, err)
return
}
content, err = utils.Json.Marshal(data)
if err != nil {
log.Errorf("failed to marshal json: %+v", err)
return
}
err = utils.Json.Unmarshal(content, &newData)
if err != nil {
log.Errorf("failed to unmarshal json: %+v", err)
return
}
if reflect.DeepEqual(oldData, newData) {
log.Infof("%s.json no changed, skip", name)
} else {
log.Infof("%s.json changed, update file", name)
//log.Infof("old: %+v\nnew:%+v", oldData, data)
utils.WriteJsonToFile(fmt.Sprintf("lang/%s.json", name), data)
}
}
func generateDriversJson() {
drivers := make(Drivers)
drivers["drivers"] = make(KV[interface{}])
@ -58,7 +98,7 @@ func generateDriversJson() {
}
drivers[k] = items
}
utils.WriteJsonToFile("lang/drivers.json", drivers)
writeFile("drivers", drivers)
}
func generateSettingsJson() {
@ -78,7 +118,8 @@ func generateSettingsJson() {
settingsLang[fmt.Sprintf("%ss", setting.Key)] = options
}
}
utils.WriteJsonToFile("lang/settings.json", settingsLang)
writeFile("settings", settingsLang)
//utils.WriteJsonToFile("lang/settings.json", settingsLang)
}
// langCmd represents the lang command

View File

@ -1,7 +1,7 @@
package utils
import (
"io/ioutil"
"os"
json "github.com/json-iterator/go"
log "github.com/sirupsen/logrus"
@ -16,7 +16,7 @@ func WriteJsonToFile(dst string, data interface{}) bool {
log.Errorf("failed convert Conf to []byte:%s", err.Error())
return false
}
err = ioutil.WriteFile(dst, str, 0777)
err = os.WriteFile(dst, str, 0777)
if err != nil {
log.Errorf("failed to write json file:%s", err.Error())
return false