]> go.fuhry.dev Git - runtime.git/commitdiff
add rollouts generated package
authorDan Fuhry <dan@fuhry.com>
Mon, 19 Oct 2026 21:09:32 +0000 (17:09 -0400)
committerDan Fuhry <dan@fuhry.com>
Mon, 19 Oct 2026 21:28:54 +0000 (17:28 -0400)
utils/rollout/rollouts/BUILD.bazel [new file with mode: 0644]
utils/rollout/rollouts/generate.sh [new file with mode: 0755]
utils/rollout/rollouts/rollouts.gen.go [new file with mode: 0644]
utils/rollout/rollouts/types.go [new file with mode: 0644]

diff --git a/utils/rollout/rollouts/BUILD.bazel b/utils/rollout/rollouts/BUILD.bazel
new file mode 100644 (file)
index 0000000..ada9fcb
--- /dev/null
@@ -0,0 +1,11 @@
+load("//bazel:go.bzl", "go_multi_library")
+
+go_multi_library(
+    name = "rollouts",
+    srcs = [
+        "rollouts.gen.go",
+        "types.go",
+    ],
+    importpath = "go.fuhry.dev/runtime/utils/rollout/rollouts",
+    visibility = ["//visibility:public"],
+)
diff --git a/utils/rollout/rollouts/generate.sh b/utils/rollout/rollouts/generate.sh
new file mode 100755 (executable)
index 0000000..eb42fff
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+set -euo pipefail
+
+declare -r scriptdir="$(cd "$(dirname "$0")"; pwd)"
+declare -r repodir="$(cd "$scriptdir/../../.."; pwd)"
+declare -r trunc="$(( ${#repodir} + 1 ))"
+
+echo -n > "$scriptdir/rollouts.gen.go"
+
+out() {
+    echo -e "$@" >> "$scriptdir/rollouts.gen.go"
+}
+
+out "package rollouts"
+out ""
+out "var allRollouts = []string{"
+
+while read match; do
+    IFS=":" read f ro <<< "$match"
+
+    out "\t// from ${f:$trunc}"
+    out "\t${ro:12},"
+done < <(grep -roE --include="*.go" --exclude="*_test.go" --exclude="*.gen.go" --exclude="*.pb.go" 'rollout.New\("[a-z0-9_]+"' "$repodir")
+
+out "}"
diff --git a/utils/rollout/rollouts/rollouts.gen.go b/utils/rollout/rollouts/rollouts.gen.go
new file mode 100644 (file)
index 0000000..d1b0e8f
--- /dev/null
@@ -0,0 +1,6 @@
+package rollouts
+
+var allRollouts = []string{
+       // from metrics/metricbus/mbclient/common.go
+       "metricbus_dbus_to_http",
+}
diff --git a/utils/rollout/rollouts/types.go b/utils/rollout/rollouts/types.go
new file mode 100644 (file)
index 0000000..7261e22
--- /dev/null
@@ -0,0 +1,12 @@
+package rollouts
+
+import "slices"
+
+//go:generate ./generate.sh
+
+func Rollouts() []string {
+       out := make([]string, len(allRollouts))
+       copy(out, allRollouts)
+       slices.Sort(out)
+       return out
+}