github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgView/kmgViewResource/kmgViewResource.go.bak (about) 1 package kmgViewResource 2 3 import ( 4 "fmt" 5 "github.com/bronze1man/kmg/kmgCrypto" 6 "github.com/bronze1man/kmg/kmgFile" 7 "github.com/bronze1man/kmg/third/kmgQiniu" 8 "path/filepath" 9 "sort" 10 "strings" 11 ) 12 13 type ResourceUploadRequest struct { 14 ResourceList []string //传入一堆资源目录的列表,然后传到七牛上. 15 Qiniu *kmgQiniu.Context 16 QiniuPrefix string 17 OutGoFilePath string 18 } 19 20 func ResourceUpload(req *ResourceUploadRequest) { 21 req.QiniuPrefix = strings.Trim(req.QiniuPrefix, "/") 22 fileList := kmgFile.MustGetAllFileFromPathList(req.ResourceList) 23 //1 css 24 cssContent := []byte{} 25 jsPathList := []string{} 26 for _, file := range fileList { 27 if kmgFile.HasExt(file, ".css") { 28 cssContent = append(cssContent, kmgFile.MustReadFile(file)...) 29 cssContent = append(cssContent, '\n') 30 } 31 if kmgFile.HasExt(file, ".js") { 32 jsPathList = append(jsPathList, file) 33 } 34 } 35 sort.Strings(jsPathList) 36 jsContent := []byte{} 37 for _, file := range jsPathList { 38 jsContent = append(jsContent, kmgFile.MustReadFile(file)...) 39 jsContent = append(jsContent, '\n') 40 } 41 cssFileName := kmgCrypto.Md5Hex(cssContent) + ".css" 42 jsFileName := kmgCrypto.Md5Hex(jsContent) + ".js" 43 writeFilePath := []kmgFile.PathAndContentPair{ 44 { 45 Path: cssFileName, 46 Content: cssContent, 47 }, 48 { 49 Path: jsFileName, 50 Content: jsContent, 51 }, 52 } 53 54 for _, pair := range writeFilePath { 55 req.Qiniu.MustUploadFromBytes(req.QiniuPrefix+"/"+pair.Path, pair.Content) 56 } 57 packageName := filepath.Base(filepath.Dir(req.OutGoFilePath)) 58 outGoContent := []byte(`package ` + packageName + ` 59 func getManagedJsUrl()string{ 60 return ` + fmt.Sprintf("%#v", req.Qiniu.GetSchemeAndDomain()+"/"+req.QiniuPrefix+"/"+jsFileName) + ` 61 } 62 func getManagedCssUrl()string{ 63 return ` + fmt.Sprintf("%#v", req.Qiniu.GetSchemeAndDomain()+"/"+req.QiniuPrefix+"/"+cssFileName) + ` 64 } 65 `) 66 kmgFile.MustWriteFile(req.OutGoFilePath, outGoContent) 67 }