未验证 提交 229fcf15 编写于 作者: P polinasok 提交者: GitHub

cmd: refactor building logic into a helper (#2629)

* cmd: refactor building logic into a helper

* Address review comments
Co-authored-by: NPolina Sokolova <polinasok@users.noreply.github.com>
上级 df5812bf
......@@ -475,18 +475,30 @@ func dapCmd(cmd *cobra.Command, args []string) {
os.Exit(status)
}
func buildBinary(cmd *cobra.Command, args []string, isTest bool) (string, bool) {
debugname, err := filepath.Abs(cmd.Flag("output").Value.String())
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return "", false
}
if isTest {
err = gobuild.GoTestBuild(debugname, args, buildFlags)
} else {
err = gobuild.GoBuild(debugname, args, buildFlags)
}
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return "", false
}
return debugname, true
}
func debugCmd(cmd *cobra.Command, args []string) {
status := func() int {
debugname, err := filepath.Abs(cmd.Flag("output").Value.String())
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return 1
}
dlvArgs, targetArgs := splitArgs(cmd, args)
err = gobuild.GoBuild(debugname, dlvArgs, buildFlags)
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
debugname, ok := buildBinary(cmd, dlvArgs, false)
if !ok {
return 1
}
defer gobuild.Remove(debugname)
......@@ -534,22 +546,11 @@ func traceCmd(cmd *cobra.Command, args []string) {
debugname = traceExecFile
if traceExecFile == "" {
debugname, err = filepath.Abs(cmd.Flag("output").Value.String())
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
debugexe, ok := buildBinary(cmd, dlvArgs, traceTestBinary)
if !ok {
return 1
}
if traceTestBinary {
if err := gobuild.GoTestBuild(debugname, dlvArgs, buildFlags); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return 1
}
} else {
if err := gobuild.GoBuild(debugname, dlvArgs, buildFlags); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return 1
}
}
debugname = debugexe
defer gobuild.Remove(debugname)
}
......@@ -672,16 +673,9 @@ func isBreakpointExistsErr(err error) bool {
func testCmd(cmd *cobra.Command, args []string) {
status := func() int {
debugname, err := filepath.Abs(cmd.Flag("output").Value.String())
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return 1
}
dlvArgs, targetArgs := splitArgs(cmd, args)
err = gobuild.GoTestBuild(debugname, dlvArgs, buildFlags)
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
debugname, ok := buildBinary(cmd, dlvArgs, true)
if !ok {
return 1
}
defer gobuild.Remove(debugname)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册