feat: center section divider to match table width (#2698)

The '========== Updated Releases ==========' header was a fixed 38
chars regardless of the table width below it. Now the divider line
is extended to match the table's visual width, with the title text
centered within the '=' borders.

- Add TableVisualWidth() to measure table width via runewidth
- Add HeaderDividerCentered() and HeaderDividerCenteredStyled()
  for centered dividers with optional bold+blue ANSI styling
- Refactor DisplayAffectedReleases to build the table first, then
  compute its width before logging the header
- Update all test snapshots and integration test output files

Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
yxxhero
2026-07-10 21:17:35 +08:00
committed by GitHub
parent 30f529f529
commit a9e4a8518a
59 changed files with 191 additions and 78 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ GROUP RELEASES
processing releases in group 1/1: default/default/foo
========== Updated Releases ==========
================= Updated Releases ==================
NAME NAMESPACE CHART VERSION DURATION
foo default incubator/raw 3.1.0 0s
@@ -48,7 +48,7 @@ processing releases in group 1/3: default//serviceC
processing releases in group 2/3: default//serviceB
processing releases in group 3/3: default//serviceA
========== Updated Releases ==========
================= Updated Releases =================
NAME NAMESPACE CHART VERSION DURATION
serviceC my/chart 3.1.0 0s
serviceB my/chart 3.1.0 0s
@@ -15,7 +15,7 @@ GROUP RELEASES
processing releases in group 1/1: default/default/foo
========== Updated Releases ==========
================= Updated Releases ==================
NAME NAMESPACE CHART VERSION DURATION
foo default incubator/raw 3.1.0 0s
@@ -52,7 +52,7 @@ processing releases in group 1/3: default/kube-system/kubernetes-external-secret
processing releases in group 2/3: default/default/external-secrets
processing releases in group 3/3: default/default/my-release
========== Updated Releases ==========
============================== Updated Releases ==============================
NAME NAMESPACE CHART VERSION DURATION
kubernetes-external-secrets kube-system incubator/raw 3.1.0 0s
external-secrets default incubator/raw 3.1.0 0s
@@ -49,7 +49,7 @@ GROUP RELEASES
processing releases in group 1/2: default/default/external-secrets
processing releases in group 2/2: default/default/my-release
========== Updated Releases ==========
======================= Updated Releases ========================
NAME NAMESPACE CHART VERSION DURATION
external-secrets default incubator/raw 3.1.0 0s
my-release default incubator/raw 3.1.0 0s
@@ -59,13 +59,13 @@ processing releases in group 1/2: default/default/external-secrets
WARNING: release external-secrets needs kubernetes-external-secrets, but kubernetes-external-secrets is not installed due to installed: false. Either mark kubernetes-external-secrets as installed or remove kubernetes-external-secrets from external-secrets's needs
processing releases in group 2/2: default/default/my-release
========== Updated Releases ==========
======================= Updated Releases ========================
NAME NAMESPACE CHART VERSION DURATION
external-secrets default incubator/raw 3.1.0 0s
my-release default incubator/raw 3.1.0 0s
========== Deleted Releases ==========
================= Deleted Releases =================
NAME NAMESPACE DURATION
kubernetes-external-secrets kube-system 0s
@@ -53,7 +53,7 @@ processing releases in group 1/2: default/default/external-secrets
WARNING: release external-secrets needs kubernetes-external-secrets, but kubernetes-external-secrets is not installed due to installed: false. Either mark kubernetes-external-secrets as installed or remove kubernetes-external-secrets from external-secrets's needs
processing releases in group 2/2: default/default/my-release
========== Updated Releases ==========
======================= Updated Releases ========================
NAME NAMESPACE CHART VERSION DURATION
external-secrets default incubator/raw 3.1.0 0s
my-release default incubator/raw 3.1.0 0s
+1 -1
View File
@@ -47,7 +47,7 @@ GROUP RELEASES
processing releases in group 1/2: default/default/external-secrets
processing releases in group 2/2: default/default/my-release
========== Updated Releases ==========
======================= Updated Releases ========================
NAME NAMESPACE CHART VERSION DURATION
external-secrets default incubator/raw 3.1.0 0s
my-release default incubator/raw 3.1.0 0s
@@ -44,7 +44,7 @@ GROUP RELEASES
processing releases in group 1/1: default/default/external-secrets
========== Updated Releases ==========
======================= Updated Releases ========================
NAME NAMESPACE CHART VERSION DURATION
external-secrets default incubator/raw 3.1.0 0s
@@ -15,7 +15,7 @@ GROUP RELEASES
processing releases in group 1/1: default/default/my-release
========== Updated Releases ==========
==================== Updated Releases =====================
NAME NAMESPACE CHART VERSION DURATION
my-release default incubator/raw 3.1.0 0s