This commit is contained in:
parent
2e0f150cdb
commit
e2c0b8ec8a
|
@ -74,18 +74,45 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
code := args["code"].(string)
|
code := args["code"].(string)
|
||||||
fout.WriteString(code)
|
if _, err := fout.WriteString(code); nil != err {
|
||||||
|
|
||||||
if err := fout.Close(); nil != err {
|
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
result.Succ = false
|
result.Succ = false
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
fout.Close()
|
||||||
|
|
||||||
suffix := ""
|
channelRet := map[string]interface{}{}
|
||||||
if util.OS.IsWindows() {
|
if nil != session.OutputWS[sid] {
|
||||||
suffix = ".exe"
|
// display "START [go build]" in front-end browser
|
||||||
|
|
||||||
|
msg := i18n.Get(locale, "start-build").(string)
|
||||||
|
msg = strings.Replace(msg, "build]", "build "+fmt.Sprint(user.BuildArgs(runtime.GOOS))+"]", 1)
|
||||||
|
|
||||||
|
channelRet["output"] = "<span class='start-build'>" + msg + "</span>\n"
|
||||||
|
channelRet["cmd"] = "start-build"
|
||||||
|
|
||||||
|
wsChannel := session.OutputWS[sid]
|
||||||
|
wsChannel.WriteJSON(&channelRet)
|
||||||
|
wsChannel.Refresh()
|
||||||
|
}
|
||||||
|
|
||||||
|
var goModCmd *exec.Cmd
|
||||||
|
if !util.File.IsExist(filepath.Join(curDir, "go.mod")) {
|
||||||
|
curDirName := filepath.Base(curDir)
|
||||||
|
goModCmd = exec.Command("go", "mod", "init", curDirName)
|
||||||
|
} else {
|
||||||
|
goModCmd = exec.Command("go", "mod", "tidy")
|
||||||
|
}
|
||||||
|
goModCmd.Dir = curDir
|
||||||
|
setCmdEnv(goModCmd, uid)
|
||||||
|
outputBytes, err := goModCmd.CombinedOutput()
|
||||||
|
output := string(outputBytes)
|
||||||
|
if nil != err && strings.Contains(output, "go.mod already exists") {
|
||||||
|
logger.Error(err.Error() + ": " + output)
|
||||||
|
result.Succ = false
|
||||||
|
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var goBuildArgs []string
|
var goBuildArgs []string
|
||||||
|
@ -99,6 +126,10 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
cmd.Dir = curDir
|
cmd.Dir = curDir
|
||||||
setCmdEnv(cmd, uid)
|
setCmdEnv(cmd, uid)
|
||||||
|
|
||||||
|
suffix := ""
|
||||||
|
if util.OS.IsWindows() {
|
||||||
|
suffix = ".exe"
|
||||||
|
}
|
||||||
executable := filepath.Base(curDir) + suffix
|
executable := filepath.Base(curDir) + suffix
|
||||||
executable = filepath.Join(curDir, executable)
|
executable = filepath.Join(curDir, executable)
|
||||||
|
|
||||||
|
@ -122,28 +153,6 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
channelRet := map[string]interface{}{}
|
|
||||||
|
|
||||||
if nil != session.OutputWS[sid] {
|
|
||||||
// display "START [go build]" in front-end browser
|
|
||||||
|
|
||||||
msg := i18n.Get(locale, "start-build").(string)
|
|
||||||
msg = strings.Replace(msg, "build]", "build "+fmt.Sprint(user.BuildArgs(runtime.GOOS))+"]", 1)
|
|
||||||
|
|
||||||
channelRet["output"] = "<span class='start-build'>" + msg + "</span>\n"
|
|
||||||
channelRet["cmd"] = "start-build"
|
|
||||||
|
|
||||||
wsChannel := session.OutputWS[sid]
|
|
||||||
|
|
||||||
err := wsChannel.WriteJSON(&channelRet)
|
|
||||||
if nil != err {
|
|
||||||
logger.Error(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
wsChannel.Refresh()
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := cmd.Start(); nil != err {
|
if err := cmd.Start(); nil != err {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
result.Succ = false
|
result.Succ = false
|
||||||
|
|
Loading…
Reference in New Issue