From 08cc0b24738f71cda7b1016a9b5364ef9ebd8b1c Mon Sep 17 00:00:00 2001 From: Anna Kapuscinska Date: Fri, 1 Mar 2024 00:29:12 +0000 Subject: [PATCH] Support rendering docs with a higher heading level This is useful when the metrics reference is embedded in another markdown document. Requested here: https://github.com/cilium/tetragon/pull/2164#discussion_r1507277511 https://github.com/cilium/tetragon/pull/2164#discussion_r1507278227 Signed-off-by: Anna Kapuscinska --- pkg/metricsmd/config.go | 1 + pkg/metricsmd/generate.go | 6 +++++- pkg/metricsmd/print.go | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/metricsmd/config.go b/pkg/metricsmd/config.go index 4b7be7d..3c1628c 100644 --- a/pkg/metricsmd/config.go +++ b/pkg/metricsmd/config.go @@ -31,4 +31,5 @@ type Config struct { LabelOverrides []LabelOverrides InitMetrics func(target string, reg *prometheus.Registry, log *slog.Logger) error CommentStyle CommentStyle + HeadingLevel int // must be between 0 and 4 } diff --git a/pkg/metricsmd/generate.go b/pkg/metricsmd/generate.go index 54f706e..5dfe919 100644 --- a/pkg/metricsmd/generate.go +++ b/pkg/metricsmd/generate.go @@ -24,7 +24,11 @@ func Generate(reg *prometheus.Registry, w io.Writer, config *Config) error { for _, metric := range metricsFamilies { // Include the metric name and help text. - io.WriteString(w, fmt.Sprintf("## `%s`\n\n", metric.GetName())) + h := "##" + for i := 0; i < config.HeadingLevel; i++ { + h += "#" + } + io.WriteString(w, fmt.Sprintf("%s `%s`\n\n", h, metric.GetName())) io.WriteString(w, fmt.Sprintf("%s\n\n", metric.GetHelp())) // The rest is generating a list of label names and values diff --git a/pkg/metricsmd/print.go b/pkg/metricsmd/print.go index b770a05..12e34eb 100644 --- a/pkg/metricsmd/print.go +++ b/pkg/metricsmd/print.go @@ -56,7 +56,11 @@ please do not edit directly. b.WriteString("\n\n") } // Document title - b.WriteString(fmt.Sprintf("# %s Metrics\n\n", config.Targets[target])) + h := "#" + for i := 0; i < config.HeadingLevel; i++ { + h += "#" + } + b.WriteString(fmt.Sprintf("%s %s Metrics\n\n", h, config.Targets[target])) // Generate metrics reference err = Generate(reg, &b, config) if err != nil {