commit b19df9bdf3c735d14794897f86b88ad8801e19b7
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2025-02-13T20:00:29Z |
| subject | Added 19 k8s helper functions |
commit b19df9bdf3c735d14794897f86b88ad8801e19b7
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2025-02-13T20:00:29Z
Added 19 k8s helper functions
---
bash/sources/19_k8s_funcs | 55 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/bash/sources/19_k8s_funcs b/bash/sources/19_k8s_funcs
new file mode 100644
index 0000000..e821c0d
--- /dev/null
+++ b/bash/sources/19_k8s_funcs
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+# Written with the help of chatgpt o3-mini
+function klabels {
+ local header=
+ local padding=
+ local trim_length=
+ local line_text=
+ local first_line=
+ local max_key_length=0
+ local max_label_length=0
+ local key=
+ local value=
+
+ while IFS= read -r line; do
+ if [ -z "$header" ]; then
+ header="$line"
+ padding="${header//LABELS/}"
+ padding="${padding//?/ }"
+ echo "$header"
+ trim_length=${#padding}
+ continue
+ fi
+
+ line_text="${line:0:trim_length}"
+ first_line=
+ IFS=',' read -ra labels <<< "${line:trim_length}"
+
+ # Calculate the maximum key length to align key=value pairs
+ for label in "${labels[@]}"; do
+ key="${label%%=*}"
+ max_key_length=$(( ${#key} > max_key_length ? ${#key} : max_key_length ))
+ done
+
+ # Print a line separator based on the longest key length
+ separator_length=$((max_key_length + trim_length))
+ printf "%${separator_length}s\n" | tr ' ' "="
+
+ # Loop through labels and align them
+ for label in "${labels[@]}"; do
+ key="${label%%=*}"
+ value="${label#*=}"
+
+ # Format the label to align the '=' sign
+ printf -v formatted_label "%-${max_key_length}s = %s" "$key" "$value"
+
+ if [ -z "$first_line" ]; then
+ first_line=1
+ echo "$line_text$formatted_label"
+ else
+ echo "$padding$formatted_label"
+ fi
+ done
+ done
+}