summaryrefslogtreecommitdiff
path: root/internal/flags
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-03 13:10:18 +0200
committerPaul Buetow <paul@buetow.org>2026-03-03 13:10:18 +0200
commit6907c5db1125cc385694f1c4283144f7d03b020e (patch)
tree304347f8eac5adad6c1ad76ade503fe37113d774 /internal/flags
parentd80acf0c92ad4b436c23ac881ec24485297a80d8 (diff)
Add watch mode for dynamic flamegraph updates
Diffstat (limited to 'internal/flags')
-rw-r--r--internal/flags/flags.go9
-rw-r--r--internal/flags/flags_test.go10
2 files changed, 16 insertions, 3 deletions
diff --git a/internal/flags/flags.go b/internal/flags/flags.go
index bc1654b..b2d9dce 100644
--- a/internal/flags/flags.go
+++ b/internal/flags/flags.go
@@ -71,9 +71,10 @@ type Flags struct {
TUIExportEnable bool
// To convert ior data into native SVG format
- IorDataFile string
- CollapsedFields []string
- CountField string
+ IorDataFile string
+ IorWatchInterval time.Duration
+ CollapsedFields []string
+ CountField string
}
func Get() Flags {
@@ -130,6 +131,8 @@ func parse() error {
flag.BoolVar(&singleton.TUIExportEnable, "tuiExport", true, "Enable writing TUI snapshot export files")
flag.StringVar(&singleton.IorDataFile, "ior", "", "IOR data file to convert into native SVG flamegraph")
+ flag.DurationVar(&singleton.IorWatchInterval, "iorWatchInterval", 0,
+ "In -ior mode, poll input file for changes and regenerate outputs; also enables auto-reloading viewer")
fields := flag.String("fields", "",
fmt.Sprintf("Comma separated list of fields to collapse, valid are: %v", validCollapsedFields))
flag.StringVar(&singleton.CountField, "count", "count",
diff --git a/internal/flags/flags_test.go b/internal/flags/flags_test.go
index 11414d8..81d01ad 100644
--- a/internal/flags/flags_test.go
+++ b/internal/flags/flags_test.go
@@ -114,6 +114,16 @@ func TestParseFlamegraphJSONFlag(t *testing.T) {
}
}
+func TestParseIorWatchIntervalFlag(t *testing.T) {
+ cfg, err := parseForTest(t, "-iorWatchInterval", "2s")
+ if err != nil {
+ t.Fatalf("parse returned error: %v", err)
+ }
+ if cfg.IorWatchInterval != 2*time.Second {
+ t.Fatalf("ior watch interval = %v, want %v", cfg.IorWatchInterval, 2*time.Second)
+ }
+}
+
func TestParseDefaultCollapsedFieldsOrder(t *testing.T) {
cfg, err := parseForTest(t)
if err != nil {