✨ CLI Deploy
This commit is contained in:
@ -8,14 +8,17 @@ import (
|
||||
"code.smartsheep.studio/goatworks/roadsign/pkg/sign"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/google/uuid"
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
func doPublish(ctx *fiber.Ctx) error {
|
||||
func doPublish(c *fiber.Ctx) error {
|
||||
var upstream *sign.UpstreamConfig
|
||||
var site *sign.SiteConfig
|
||||
for _, item := range sign.App.Sites {
|
||||
if item.ID == ctx.Params("site") {
|
||||
if item.ID == c.Params("site") {
|
||||
site = item
|
||||
for _, stream := range item.Upstreams {
|
||||
if stream.ID == ctx.Params("upstream") {
|
||||
if stream.ID == c.Params("upstream") {
|
||||
upstream = stream
|
||||
break
|
||||
}
|
||||
@ -30,35 +33,39 @@ func doPublish(ctx *fiber.Ctx) error {
|
||||
return fiber.ErrUnprocessableEntity
|
||||
}
|
||||
|
||||
for _, process := range site.Processes {
|
||||
process.StopProcess()
|
||||
}
|
||||
|
||||
workdir, _ := upstream.GetRawURI()
|
||||
|
||||
if ctx.Query("overwrite", "yes") == "yes" {
|
||||
if c.Query("overwrite", "yes") == "yes" {
|
||||
files, _ := filepath.Glob(filepath.Join(workdir, "*"))
|
||||
for _, file := range files {
|
||||
_ = os.Remove(file)
|
||||
}
|
||||
}
|
||||
|
||||
if form, err := ctx.MultipartForm(); err == nil {
|
||||
if form, err := c.MultipartForm(); err == nil {
|
||||
files := form.File["attachments"]
|
||||
for _, file := range files {
|
||||
mimetype := file.Header["Content-Type"][0]
|
||||
mimetype := lo.Ternary(len(c.Query("mimetype")) > 0, c.Query("mimetype"), file.Header["Content-Type"][0])
|
||||
switch mimetype {
|
||||
case "application/zip":
|
||||
dst := filepath.Join(os.TempDir(), uuid.NewString()+".zip")
|
||||
if err := ctx.SaveFile(file, dst); err != nil {
|
||||
if err := c.SaveFile(file, dst); err != nil {
|
||||
return err
|
||||
} else {
|
||||
_ = filesystem.Unzip(dst, workdir)
|
||||
}
|
||||
default:
|
||||
dst := filepath.Join(workdir, file.Filename)
|
||||
if err := ctx.SaveFile(file, dst); err != nil {
|
||||
if err := c.SaveFile(file, dst); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ctx.SendStatus(fiber.StatusOK)
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
}
|
||||
|
Reference in New Issue
Block a user