|
@@ -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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|