penguin/utils

my env utils

commit 071a4a8290179b5f35f86efef6ee556ba82a8898

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-06-28T02:27:28Z
subjectrbash-reload to support -f
commit 071a4a8290179b5f35f86efef6ee556ba82a8898
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-06-28T02:27:28Z

    rbash-reload to support -f
---
 bash/core/30_loader.bash | 74 +++++++++++++++++++++++++-----------------------
 bash/dist/rbashrc        | 68 +++++++++++++++++++++++---------------------
 bash/dist/rbashrc.asc    | 10 +++----
 3 files changed, 80 insertions(+), 72 deletions(-)

diff --git a/bash/core/30_loader.bash b/bash/core/30_loader.bash
index a5f15b4..fc1ebd3 100755
--- a/bash/core/30_loader.bash
+++ b/bash/core/30_loader.bash
@@ -1,40 +1,44 @@
 rbash-reload() {
-  _RBASH_LOADED=
-  _RBASH_MERGE_START=1
+	_RBASH_LOADED=
+	_RBASH_MERGE_START=1
 
-  mkdir -p "$RBASH_CACHE_DIR"
+	if [ "$1" = "-f" ]; then
+		rm -rf "$RBASH_CACHE_DIR"
+	fi
+
+	mkdir -p "$RBASH_CACHE_DIR"
 
-  rm -f "$RBASH_MERGED"
-  : > "$RBASH_MERGED" || {
-    echo "rbash: failed to write merged cache: $RBASH_MERGED" >&2
-    _RBASH_MERGE_START=
-    return 1
-  }
+	rm -f "$RBASH_MERGED"
+	: > "$RBASH_MERGED" || {
+		echo "rbash: failed to write merged cache: $RBASH_MERGED" >&2
+		_RBASH_MERGE_START=
+		return 1
+	}
 
-  # shellcheck source=/dev/null
-  source "$RBASH_CONFIG"
+	# shellcheck source=/dev/null
+	source "$RBASH_CONFIG"
 
-  _RBASH_MERGE_START=
-  _RBASH_LOADED=1
+	_RBASH_MERGE_START=
+	_RBASH_LOADED=1
 }
 
 __rbash_autoload() {
-  if [ -n "${_RBASH_LOADED:-}" ]; then
-    return 0
-  fi
-
-  if [ -f "$RBASH_MERGED" ]; then
-    # shellcheck source=/dev/null
-    source "$RBASH_MERGED" && {
-      _RBASH_LOADED=1
-      return 0
-    }
-
-    echo "rbash: merged cache failed, rebuilding" >&2
-    rm -f "$RBASH_MERGED"
-  fi
-
-  rbash-reload
+	if [ -n "${_RBASH_LOADED:-}" ]; then
+		return 0
+	fi
+
+	if [ -f "$RBASH_MERGED" ]; then
+		# shellcheck source=/dev/null
+		source "$RBASH_MERGED" && {
+			_RBASH_LOADED=1
+			return 0
+		}
+
+		echo "rbash: merged cache failed, rebuilding" >&2
+		rm -f "$RBASH_MERGED"
+	fi
+
+	rbash-reload
 }
 
 rbash_load() {
@@ -74,13 +78,13 @@ rbash_load() {
 }
 
 rbash-run() {
-  local rel="$1"
-  local file
+	local rel="$1"
+	local file
 
-  shift || true
+	shift || true
 
-  echo "Getting: $rel"
+	echo "Getting: $rel"
 
-  file="$(rbash_cache "$(rbash_url "$rel")")" || return 1
-  "$file" "$@"
+	file="$(rbash_cache "$(rbash_url "$rel")")" || return 1
+	"$file" "$@"
 }
diff --git a/bash/dist/rbashrc b/bash/dist/rbashrc
index 613f121..7bedf5f 100755
--- a/bash/dist/rbashrc
+++ b/bash/dist/rbashrc
@@ -195,42 +195,46 @@ _require_jq() {
 # ---- rbash: bash/core/30_loader.bash ----
 
 rbash-reload() {
-  _RBASH_LOADED=
-  _RBASH_MERGE_START=1
+	_RBASH_LOADED=
+	_RBASH_MERGE_START=1
 
-  mkdir -p "$RBASH_CACHE_DIR"
+	if [ "$1" = "-f" ]; then
+		rm -rf "$RBASH_CACHE_DIR"
+	fi
 
-  rm -f "$RBASH_MERGED"
-  : > "$RBASH_MERGED" || {
-    echo "rbash: failed to write merged cache: $RBASH_MERGED" >&2
-    _RBASH_MERGE_START=
-    return 1
-  }
+	mkdir -p "$RBASH_CACHE_DIR"
 
-  # shellcheck source=/dev/null
-  source "$RBASH_CONFIG"
+	rm -f "$RBASH_MERGED"
+	: > "$RBASH_MERGED" || {
+		echo "rbash: failed to write merged cache: $RBASH_MERGED" >&2
+		_RBASH_MERGE_START=
+		return 1
+	}
+
+	# shellcheck source=/dev/null
+	source "$RBASH_CONFIG"
 
-  _RBASH_MERGE_START=
-  _RBASH_LOADED=1
+	_RBASH_MERGE_START=
+	_RBASH_LOADED=1
 }
 
 __rbash_autoload() {
-  if [ -n "${_RBASH_LOADED:-}" ]; then
-    return 0
-  fi
+	if [ -n "${_RBASH_LOADED:-}" ]; then
+		return 0
+	fi
 
-  if [ -f "$RBASH_MERGED" ]; then
-    # shellcheck source=/dev/null
-    source "$RBASH_MERGED" && {
-      _RBASH_LOADED=1
-      return 0
-    }
+	if [ -f "$RBASH_MERGED" ]; then
+		# shellcheck source=/dev/null
+		source "$RBASH_MERGED" && {
+			_RBASH_LOADED=1
+			return 0
+		}
 
-    echo "rbash: merged cache failed, rebuilding" >&2
-    rm -f "$RBASH_MERGED"
-  fi
+		echo "rbash: merged cache failed, rebuilding" >&2
+		rm -f "$RBASH_MERGED"
+	fi
 
-  rbash-reload
+	rbash-reload
 }
 
 rbash_load() {
@@ -270,15 +274,15 @@ rbash_load() {
 }
 
 rbash-run() {
-  local rel="$1"
-  local file
+	local rel="$1"
+	local file
 
-  shift || true
+	shift || true
 
-  echo "Getting: $rel"
+	echo "Getting: $rel"
 
-  file="$(rbash_cache "$(rbash_url "$rel")")" || return 1
-  "$file" "$@"
+	file="$(rbash_cache "$(rbash_url "$rel")")" || return 1
+	"$file" "$@"
 }
 
 
diff --git a/bash/dist/rbashrc.asc b/bash/dist/rbashrc.asc
index 0a1295a..06df515 100644
--- a/bash/dist/rbashrc.asc
+++ b/bash/dist/rbashrc.asc
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNATURE-----
 
-iJEEABYKADkWIQR8HpSNhBJUxWnt+97Vz1+xz60nwwUCakCD2BsUgAAAAAAEAA5t
-YW51MiwyLjUrMS4xMiwwLDMACgkQ1c9fsc+tJ8MfWwEAx539cnhecaZdpc4pj0gQ
-ekUURDkVLf4654Ot6il0TbQA/iWaIOPgSOgDYwB8+83cjqlNrXRiq/Uj0Nu5vWZm
-V/AO
-=LRnk
+iJEEABYKADkWIQR8HpSNhBJUxWnt+97Vz1+xz60nwwUCakCGbRsUgAAAAAAEAA5t
+YW51MiwyLjUrMS4xMiwwLDMACgkQ1c9fsc+tJ8OCjQD/bHWhIGbbuB2RS4oNu7Ur
+LSIgPDSUqHH1hM3TDT6PijEBANUZYsLndu92wjLa6rtQnv9A6ZTYsBR+P6D24teq
+FbcA
+=6ZYt
 -----END PGP SIGNATURE-----