mirror of
https://github.com/beego/bee.git
synced 2024-11-23 01:30:55 +00:00
c538bfbc8f
create sub packages delete unused code delete code from not use command cmdRouter,cmdTest, cmdRundocs make command plugins check with gosimple,staticcheck,go vet,unused,unconvert
89 lines
1.8 KiB
Go
89 lines
1.8 KiB
Go
package run
|
|
|
|
import (
|
|
"archive/zip"
|
|
"io"
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
|
|
beeLogger "github.com/beego/bee/logger"
|
|
)
|
|
|
|
var (
|
|
swaggerVersion = "2"
|
|
swaggerlink = "https://github.com/beego/swagger/archive/v" + swaggerVersion + ".zip"
|
|
)
|
|
|
|
func downloadFromURL(url, fileName string) {
|
|
var down bool
|
|
if fd, err := os.Stat(fileName); err != nil && os.IsNotExist(err) {
|
|
down = true
|
|
} else if fd.Size() == int64(0) {
|
|
down = true
|
|
} else {
|
|
beeLogger.Log.Infof("'%s' already exists", fileName)
|
|
return
|
|
}
|
|
if down {
|
|
beeLogger.Log.Infof("Downloading '%s' to '%s'...", url, fileName)
|
|
output, err := os.Create(fileName)
|
|
if err != nil {
|
|
beeLogger.Log.Errorf("Error while creating '%s': %s", fileName, err)
|
|
return
|
|
}
|
|
defer output.Close()
|
|
|
|
response, err := http.Get(url)
|
|
if err != nil {
|
|
beeLogger.Log.Errorf("Error while downloading '%s': %s", url, err)
|
|
return
|
|
}
|
|
defer response.Body.Close()
|
|
|
|
n, err := io.Copy(output, response.Body)
|
|
if err != nil {
|
|
beeLogger.Log.Errorf("Error while downloading '%s': %s", url, err)
|
|
return
|
|
}
|
|
beeLogger.Log.Successf("%d bytes downloaded!", n)
|
|
}
|
|
}
|
|
|
|
func unzipAndDelete(src string) error {
|
|
beeLogger.Log.Infof("Unzipping '%s'...", src)
|
|
r, err := zip.OpenReader(src)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer r.Close()
|
|
|
|
rp := strings.NewReplacer("swagger-"+swaggerVersion, "swagger")
|
|
for _, f := range r.File {
|
|
rc, err := f.Open()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer rc.Close()
|
|
|
|
fname := rp.Replace(f.Name)
|
|
if f.FileInfo().IsDir() {
|
|
os.MkdirAll(fname, f.Mode())
|
|
} else {
|
|
f, err := os.OpenFile(
|
|
fname, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
|
|
_, err = io.Copy(f, rc)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
beeLogger.Log.Successf("Done! Deleting '%s'...", src)
|
|
return os.RemoveAll(src)
|
|
}
|