diff --git a/server/core/config.go b/server/core/config.go index 0ff0108be1d6cdd65e36ba9e940eb18aff2240cb..dcb5b95e401fc050c5aa93d17fc51ed57bd5c417 100644 --- a/server/core/config.go +++ b/server/core/config.go @@ -3,6 +3,7 @@ package core import ( "fmt" "gin-vue-admin/global" + _ "gin-vue-admin/packfile" "github.com/fsnotify/fsnotify" "github.com/spf13/viper" ) diff --git a/server/packfile/notUsePackFile.go b/server/packfile/notUsePackFile.go new file mode 100644 index 0000000000000000000000000000000000000000..e54aad30fa5f01b18e993fa27361a828ff269def --- /dev/null +++ b/server/packfile/notUsePackFile.go @@ -0,0 +1,3 @@ +// +build !packfile + +package packfile diff --git a/server/packfile/usePackFile.go b/server/packfile/usePackFile.go new file mode 100644 index 0000000000000000000000000000000000000000..055f03dd499178a5e1afa819ea23609dada77435 --- /dev/null +++ b/server/packfile/usePackFile.go @@ -0,0 +1,45 @@ +// +build packfile + +package packfile + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "strings" +) + +//go:generate go-bindata -o=staticFile.go -pkg=packfile -tags=packfile ../resource/... ../config.yaml + +func writeFile(path string, data []byte) { + // 如果文件夹不存在,预先创建文件夹 + if lastSeparator := strings.LastIndex(path, "/"); lastSeparator != -1 { + dirPath := path[:lastSeparator] + if _, err := os.Stat(dirPath); err != nil && os.IsNotExist(err) { + os.MkdirAll(dirPath, os.ModePerm) + } + } + + // 已存在的文件,不应该覆盖重写,可能在前端更改了配置文件等 + if _, err := os.Stat(path); os.IsNotExist(err) { + if err2 := ioutil.WriteFile(path, data, os.ModePerm); err2 != nil { + fmt.Printf("Write file failed: %s\n", path) + } + } else { + fmt.Printf("File exist, skip: %s\n", path) + } +} + +func init() { + for key := range _bindata { + filePath, _ := filepath.Abs(strings.TrimPrefix(key, ".")) + data, err := Asset(key) + if err != nil { + // Asset was not found. + fmt.Printf("Fail to find: %s\n", filePath) + } else { + writeFile(filePath, data) + } + } +}