✨ Post deploy script
This commit is contained in:
		| @@ -2,9 +2,12 @@ package sideload | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"git.solsynth.dev/goatworks/roadsign/pkg/warden" | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
|  | ||||
| 	"git.solsynth.dev/goatworks/roadsign/pkg/navi" | ||||
| 	"github.com/gofiber/fiber/v2" | ||||
| @@ -50,7 +53,7 @@ func doPublish(c *fiber.Ctx) error { | ||||
| 		return fiber.ErrNotFound | ||||
| 	} | ||||
|  | ||||
| 	if c.Query("overwrite", "yes") == "yes" { | ||||
| 	if c.QueryBool("overwrite", true) { | ||||
| 		files, _ := filepath.Glob(filepath.Join(workdir, "*")) | ||||
| 		for _, file := range files { | ||||
| 			_ = os.Remove(file) | ||||
| @@ -74,6 +77,7 @@ func doPublish(c *fiber.Ctx) error { | ||||
| 						return err | ||||
| 					} | ||||
| 				} | ||||
| 				_ = os.Remove(dst) | ||||
| 			default: | ||||
| 				dst := filepath.Join(workdir, file.Filename) | ||||
| 				if err := c.SaveFile(file, dst); err != nil { | ||||
| @@ -83,6 +87,15 @@ func doPublish(c *fiber.Ctx) error { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if postScript := c.FormValue("post-deploy-script", ""); len(postScript) > 0 { | ||||
| 		cmd := exec.Command("sh", "-c", postScript) | ||||
| 		cmd.Dir = filepath.Join(workdir) | ||||
| 		cmd.Env = append(cmd.Env, strings.Split(c.FormValue("post-deploy-environment", ""), "\n")...) | ||||
| 		if err := cmd.Run(); err != nil { | ||||
| 			return fiber.NewError(fiber.StatusInternalServerError, fmt.Sprintf("post deploy script runs failed: %v", err)) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if instance != nil { | ||||
| 		_ = instance.Wake() | ||||
| 	} | ||||
|   | ||||
| @@ -77,7 +77,7 @@ func doSync(c *fiber.Ctx) error { | ||||
| 		_ = instance.Stop() | ||||
| 	} | ||||
| 	for _, instance := range startQueue { | ||||
| 		_ = instance.Start() | ||||
| 		_ = instance.Wake() | ||||
| 	} | ||||
|  | ||||
| 	return c.SendStatus(fiber.StatusOK) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user