CmdName string // "build", "install", "list", "mod tidy", etc.
DebugActiongraph string // -debug-actiongraph flag (undocumented, unstable)
+ DebugTrace string // -debug-trace flag
)
func defaultContext() build.Context {
// Undocumented, unstable debugging flags.
cmd.Flag.StringVar(&cfg.DebugActiongraph, "debug-actiongraph", "", "")
+ cmd.Flag.StringVar(&cfg.DebugTrace, "debug-trace", "", "")
}
// AddModCommonFlags adds the module-related flags common to build commands
package main
import (
+ "context"
"flag"
"fmt"
"log"
"cmd/go/internal/run"
"cmd/go/internal/test"
"cmd/go/internal/tool"
+ "cmd/go/internal/trace"
"cmd/go/internal/version"
"cmd/go/internal/vet"
"cmd/go/internal/work"
cmd.Flag.Parse(args[1:])
args = cmd.Flag.Args()
}
+ ctx := maybeStartTrace(context.Background())
+ ctx, span := trace.StartSpan(ctx, fmt.Sprint("Running ", cmd.Name(), " command"))
+ _ = ctx
cmd.Run(cmd, args)
+ span.Done()
base.Exit()
return
}
help.PrintUsage(os.Stderr, base.Go)
os.Exit(2)
}
+
+func maybeStartTrace(pctx context.Context) context.Context {
+ if cfg.DebugTrace == "" {
+ return pctx
+ }
+
+ ctx, close, err := trace.Start(pctx, cfg.DebugTrace)
+ if err != nil {
+ base.Fatalf("failed to start trace: %v", err)
+ }
+ base.AtExit(func() {
+ if err := close(); err != nil {
+ base.Fatalf("failed to stop trace: %v", err)
+ }
+ })
+
+ return ctx
+}