mirror of
https://github.com/quarkcloudio/quark-go.git
synced 2025-09-26 20:11:11 +08:00
fix: 优化代码
This commit is contained in:
1
go.mod
1
go.mod
@@ -122,6 +122,7 @@ require (
|
||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||
github.com/valyala/fasthttp v1.43.0 // indirect
|
||||
github.com/valyala/tcplisten v1.0.0 // indirect
|
||||
github.com/xbmlz/gct v0.0.0-20220707064702-998631a80a6a
|
||||
github.com/xuri/efp v0.0.0-20220603152613-6918739fd470 // indirect
|
||||
github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.2 // indirect
|
||||
|
2
go.sum
2
go.sum
@@ -960,6 +960,8 @@ github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQ
|
||||
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
|
||||
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
|
||||
github.com/xbmlz/gct v0.0.0-20220707064702-998631a80a6a h1:trfL4gldWsl4RdXVft2j8VZu4Xh+sws7EovGTJyfnOs=
|
||||
github.com/xbmlz/gct v0.0.0-20220707064702-998631a80a6a/go.mod h1:45Nbht0AaBjpcsN2z0Zr67vCcfeA12mM7BrtEIVCh90=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
|
||||
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
|
||||
|
@@ -3,6 +3,7 @@ package builder
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"reflect"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -10,7 +11,7 @@ import (
|
||||
"github.com/jinzhu/copier"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/quarkcms/quark-go/pkg/dal"
|
||||
"github.com/quarkcms/quark-go/pkg/github"
|
||||
"github.com/quarkcms/quark-go/pkg/gopkg"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
@@ -19,7 +20,7 @@ const (
|
||||
AppName = "QuarkGo"
|
||||
|
||||
// Version of current package
|
||||
Version = "1.2.9"
|
||||
Version = "1.2.10"
|
||||
|
||||
// 静态文件URL
|
||||
RespositoryURL = "https://github.com/quarkcms/quark-go/tree/1.2/website/"
|
||||
@@ -105,8 +106,21 @@ func New(config *Config) *Engine {
|
||||
config: config,
|
||||
}
|
||||
|
||||
// 默认静态文件目录
|
||||
if config.StaticPath == "" {
|
||||
config.StaticPath = "./website"
|
||||
}
|
||||
|
||||
// 下载静态文件
|
||||
github.Download(RespositoryURL, config.StaticPath)
|
||||
_, err := os.Stat(config.StaticPath + "/install.lock")
|
||||
if os.IsNotExist(err) {
|
||||
err := gopkg.New("github.com/quarkcms/quark-go", Version).Save("website", config.StaticPath)
|
||||
if err == nil {
|
||||
// 创建锁定文件
|
||||
file, _ := os.Create(config.StaticPath + "/install.lock")
|
||||
file.Close()
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化请求列表
|
||||
engine.initPaths()
|
||||
|
149
pkg/gopkg/gopkg.go
Normal file
149
pkg/gopkg/gopkg.go
Normal file
@@ -0,0 +1,149 @@
|
||||
package gopkg
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/xbmlz/gct"
|
||||
)
|
||||
|
||||
// 包域名地址
|
||||
const domain = "https://goproxy.cn/"
|
||||
|
||||
// 结构体
|
||||
type PkgGo struct {
|
||||
Name string
|
||||
Version string
|
||||
}
|
||||
|
||||
func New(name string, version string) *PkgGo {
|
||||
return &PkgGo{
|
||||
Name: name,
|
||||
Version: version,
|
||||
}
|
||||
}
|
||||
|
||||
// 下载文件
|
||||
func (p *PkgGo) Download() error {
|
||||
|
||||
// https://goproxy.cn/github.com/quarkcms/quark-go/@v/v1.2.9.zip
|
||||
fileUrl := domain + p.Name + "/@v/v" + p.Version + ".zip"
|
||||
|
||||
// Get the data
|
||||
resp, err := http.Get(fileUrl)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 创建文件用于保存
|
||||
out, err := os.Create("./tmp/v" + p.Version + ".zip")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
// 然后将响应流和文件流对接起来
|
||||
_, err = io.Copy(out, resp.Body)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// 解压文件
|
||||
func (p *PkgGo) Unzip() error {
|
||||
filePath := "./tmp/v" + p.Version + ".zip"
|
||||
|
||||
return gct.FileUtils.Unzip(filePath, "./tmp/v"+p.Version)
|
||||
}
|
||||
|
||||
// 保存文件
|
||||
func (p *PkgGo) Save(dir string, path string) error {
|
||||
|
||||
// 先下载文件
|
||||
err := p.Download()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 解压下载文件
|
||||
err = p.Unzip()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 清理缓存文件
|
||||
defer os.RemoveAll("./tmp/v" + p.Version)
|
||||
|
||||
// 清理压缩文件
|
||||
defer os.RemoveAll("./tmp/v" + p.Version + ".zip")
|
||||
|
||||
// 移动文件
|
||||
err = Dir("./tmp/v"+p.Version+"/"+p.Name+"@v"+p.Version+"/"+dir, path)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// File copies a single file from src to dst
|
||||
func File(src, dst string) error {
|
||||
var err error
|
||||
var srcfd *os.File
|
||||
var dstfd *os.File
|
||||
var srcinfo os.FileInfo
|
||||
|
||||
if srcfd, err = os.Open(src); err != nil {
|
||||
return err
|
||||
}
|
||||
defer srcfd.Close()
|
||||
|
||||
if dstfd, err = os.Create(dst); err != nil {
|
||||
return err
|
||||
}
|
||||
defer dstfd.Close()
|
||||
|
||||
if _, err = io.Copy(dstfd, srcfd); err != nil {
|
||||
return err
|
||||
}
|
||||
if srcinfo, err = os.Stat(src); err != nil {
|
||||
return err
|
||||
}
|
||||
return os.Chmod(dst, srcinfo.Mode())
|
||||
}
|
||||
|
||||
// Dir copies a whole directory recursively
|
||||
func Dir(src string, dst string) error {
|
||||
var err error
|
||||
var fds []os.FileInfo
|
||||
var srcinfo os.FileInfo
|
||||
|
||||
if srcinfo, err = os.Stat(src); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = os.MkdirAll(dst, srcinfo.Mode()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if fds, err = ioutil.ReadDir(src); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, fd := range fds {
|
||||
srcfp := path.Join(src, fd.Name())
|
||||
dstfp := path.Join(dst, fd.Name())
|
||||
|
||||
if fd.IsDir() {
|
||||
if err = Dir(srcfp, dstfp); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
} else {
|
||||
if err = File(srcfp, dstfp); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user