diff --git a/client/client.go b/client/client.go index ba1dc9d..76b3169 100644 --- a/client/client.go +++ b/client/client.go @@ -105,7 +105,7 @@ func unmarshal[T any](val *T, src map[string]string) { func gatherDeployedPrograms(name string) []*protos.VersionAndArgs { var rawvers []*protos.VersionAndArgs - if vers, err := os.ReadDir(path.Join("./", name)); err == nil { + if vers, err := os.ReadDir(name); err == nil { for _, ver := range vers { if ver.IsDir() { args := lastExecutionArgs(path.Join(name, ver.Name())) diff --git a/client/deploy.go b/client/deploy.go index 91afc1f..4127886 100644 --- a/client/deploy.go +++ b/client/deploy.go @@ -160,7 +160,7 @@ func (hc *houstonClient) prepareDeploy(name string, version string) (destPath st } }() - verpath := path.Join("./", name, version) + verpath := path.Join(name, version) if _, err := os.Stat(verpath); os.IsNotExist(err) { // 없네? 만들면 된다. err = os.MkdirAll(verpath, fs.FileMode(os.O_WRONLY)) @@ -210,7 +210,7 @@ func (hc *houstonClient) deploy(req *shared.DeployRequest) error { } func (hc *houstonClient) withdraw(req *shared.WithdrawRequest) error { - fd, _ := os.Stat(path.Join("./", req.Name, req.Version)) + fd, _ := os.Stat(path.Join(req.Name, req.Version)) if fd != nil { if fd.IsDir() { for _, running := range hc.childProcs { @@ -222,7 +222,7 @@ func (hc *houstonClient) withdraw(req *shared.WithdrawRequest) error { } } - return os.RemoveAll(path.Join("./", req.Name, req.Version)) + return os.RemoveAll(path.Join(req.Name, req.Version)) } } diff --git a/client/operation.go b/client/operation.go index 3841df5..137ad9c 100644 --- a/client/operation.go +++ b/client/operation.go @@ -168,7 +168,7 @@ func prepareProcessLaunch(req *shared.StartProcessRequest) *procmeta { re := regexp.MustCompile(`[^\s"']+|"([^"]*)"|'([^']*)`) args := re.FindAllString(req.Args, -1) - verpath := path.Join("./", req.Name, req.Version) + verpath := path.Join(req.Name, req.Version) fi, err := os.Stat(verpath) if err == nil && fi.IsDir() { @@ -319,7 +319,7 @@ func (hc *houstonClient) startChildProcess(req *shared.StartProcessRequest) erro logger.Println("startChildProcess :", *req) if req.Version == "latest" { // 최신 버전을 찾음 - latest, err := shared.FindLastestVersion(path.Join("./", req.Name)) + latest, err := shared.FindLastestVersion(req.Name) if err != nil { return err } @@ -357,7 +357,7 @@ var errNoRunningProcess = errors.New("no running processed") func (hc *houstonClient) stopChildProcess(req *shared.StopProcessRequest) error { if req.Version == "latest" { // 최신 버전을 찾음 - latest, err := shared.FindLastestVersion(path.Join("./", req.Name)) + latest, err := shared.FindLastestVersion(req.Name) if err != nil { return err } @@ -424,7 +424,7 @@ func (hc *houstonClient) stopChildProcess(req *shared.StopProcessRequest) error func (hc *houstonClient) restartChildProcess(req *shared.RestartProcessRequest) error { if req.Version == "latest" { // 최신 버전을 찾음 - latest, err := shared.FindLastestVersion(path.Join("./", req.Name)) + latest, err := shared.FindLastestVersion(req.Name) if err != nil { return err } @@ -476,7 +476,7 @@ func (hc *houstonClient) restartChildProcess(req *shared.RestartProcessRequest) func (hc *houstonClient) uploadFiles(req *shared.UploadRequest) error { if req.Version == "latest" { // 최신 버전을 찾음 - latest, err := shared.FindLastestVersion(path.Join("./", req.Name)) + latest, err := shared.FindLastestVersion(req.Name) if err != nil { return err } diff --git a/server/http_api.go b/server/http_api.go index 508757a..4596c2b 100644 --- a/server/http_api.go +++ b/server/http_api.go @@ -96,6 +96,28 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque } } +func (h *houstonHandler) DeleteDeploySource(w http.ResponseWriter, r *http.Request) { + //
+ version := r.FormValue("version") + name := r.FormValue("name") + + if len(version) == 0 || len(name) == 0 { + w.WriteHeader(http.StatusBadRequest) + return + } + + // deploys 폴더는 파일시스템 서비스이므로 다운로드 가능 + targetpath := path.Join("deploys", name, version) + if err := os.RemoveAll(targetpath); err != nil { + logger.Println("deleteDeploySource failed :", err) + w.WriteHeader(http.StatusInternalServerError) + return + } +} + func (h *houstonHandler) Deploy(w http.ResponseWriter, r *http.Request) { // + name := r.FormValue("name") + version := r.FormValue("version") + traws := r.FormValue("targets") + + var targets []string + if len(traws) > 0 { + if err := json.Unmarshal([]byte(traws), &targets); err != nil { + logger.Error(err) + w.WriteHeader(http.StatusBadRequest) + return + } + } + + if len(name) == 0 || len(version) == 0 || len(targets) == 0 { + w.WriteHeader(http.StatusBadRequest) + return + } + + h.Operation().Withdraw(MakeWithdrawRequest( + shared.WithdrawRequest{ + Name: name, + Version: version, + }, + targets, + )) +} + func (h *houstonHandler) StartProcess(w http.ResponseWriter, r *http.Request) { //