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)
|
||||
fout.WriteString(code)
|
||||
|
||||
if err := fout.Close(); nil != err {
|
||||
if _, err := fout.WriteString(code); nil != err {
|
||||
logger.Error(err)
|
||||
result.Succ = false
|
||||
|
||||
return
|
||||
}
|
||||
fout.Close()
|
||||
|
||||
suffix := ""
|
||||
if util.OS.IsWindows() {
|
||||
suffix = ".exe"
|
||||
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]
|
||||
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
|
||||
|
@ -99,6 +126,10 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
cmd.Dir = curDir
|
||||
setCmdEnv(cmd, uid)
|
||||
|
||||
suffix := ""
|
||||
if util.OS.IsWindows() {
|
||||
suffix = ".exe"
|
||||
}
|
||||
executable := filepath.Base(curDir) + suffix
|
||||
executable = filepath.Join(curDir, executable)
|
||||
|
||||
|
@ -122,28 +153,6 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
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 {
|
||||
logger.Error(err)
|
||||
result.Succ = false
|
||||
|
|
Loading…
Reference in New Issue