aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/tool/tool.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-12-16 13:31:37 +0100
committerDmitry Vyukov <dvyukov@google.com>2020-12-25 10:12:41 +0100
commit257f4cb9050d29a38a992b814bd6e79e6f1bca99 (patch)
tree4f52317a4eb614821de2b930282e03d9f117535d /pkg/tool/tool.go
parent3bcdec13657598f6a6163c7ddecff58c2d3a2a71 (diff)
pkg/cmdprof: merge into pkg/tool
cmdprof functionality seems to fit well into pkg/tool.
Diffstat (limited to 'pkg/tool/tool.go')
-rw-r--r--pkg/tool/tool.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/pkg/tool/tool.go b/pkg/tool/tool.go
index bb1f436cc..690bfa4b8 100644
--- a/pkg/tool/tool.go
+++ b/pkg/tool/tool.go
@@ -5,10 +5,25 @@
package tool
import (
+ "flag"
"fmt"
"os"
)
+// Init handles common tasks for command line tools:
+// - invokes flag.Parse
+// - adds support for optional flags (see OptionalFlags)
+// - adds support for cpu/mem profiling (-cpuprofile/memprofile flags)
+// Use as defer tool.Init()().
+func Init() func() {
+ flagCPUProfile := flag.String("cpuprofile", "", "write CPU profile to this file")
+ flagMEMProfile := flag.String("memprofile", "", "write memory profile to this file")
+ if err := ParseFlags(flag.CommandLine, os.Args[1:]); err != nil {
+ Fail(err)
+ }
+ return installProfiling(*flagCPUProfile, *flagMEMProfile)
+}
+
func Failf(msg string, args ...interface{}) {
fmt.Fprintf(os.Stderr, msg+"\n", args...)
os.Exit(1)