penguin/utils

my env utils

commit f271e1fb55eacee8be10ef02b536c988d77a3f90

author斟酌 鵬兄 <tgckpg@gmail.com>
date2022-08-11T16:00:30Z
subjectSpeed up loading by merging
commit f271e1fb55eacee8be10ef02b536c988d77a3f90
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2022-08-11T16:00:30Z

    Speed up loading by merging
---
 bash/bashrc/rbashrc | 30 +++++++++++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/bash/bashrc/rbashrc b/bash/bashrc/rbashrc
index a5655ad..393808b 100644
--- a/bash/bashrc/rbashrc
+++ b/bash/bashrc/rbashrc
@@ -26,6 +26,8 @@ fi
 
 mkdir -p "$RBASH_SOURCES"
 
+RBASH_MERGED="$RBASH_SOURCES/merged"
+
 # don't put duplicate lines or lines starting with space in the history.
 # See bash(1) for more options
 HISTCONTROL=ignoreboth
@@ -109,12 +111,32 @@ function rbash_cache {
     echo -n "$CACHE_FILE"
 }
 
-# User specific aliases and functions
+_RBASH_LOADED=
 function rbash_load {
     local f path
+
+	if [ -z "$_RBASH_UPGRADE" ]; then
+		if [ -n "$_RBASH_LOADED" ]; then
+			return 0
+		fi
+
+		if [ -f "$RBASH_MERGED" ]; then
+			source $RBASH_MERGED
+			if [ $? -eq 0 ]; then
+				_RBASH_LOADED=1
+				return 0
+			fi
+			rm "$RBASH_MERGED"
+		fi
+	fi
+
     echo "Load: $1"
     f=`rbash_cache "$RBASH_REMOTE/$RBASH_REPO/raw/branch/master/$RBASH_PATH/$1"`
     source "$f"
+
+	echo "echo \"Load: $1\"" >> "$RBASH_MERGED"
+	cat "$f" >> "$RBASH_SOURCES/merged"
+	chmod 700 "$RBASH_MERGED"
 }
 
 function rbash-upgrade {
@@ -151,7 +173,9 @@ function rbash-upgrade {
         rm -r "$RBASH_SOURCES"
     fi
 
+	_RBASH_UPGRADE=1
     source $__SCRIPT
+	unset _RBASH_UPGRADE
 }
 
 function rbash-run {
@@ -219,7 +243,7 @@ function r2ensource {
 		echo "Enabling $_id"
 	done
 	sort $_tmp > "$RBASH_CONFIG"
-	rm $_tmp
+	rm $_tmp "$RBASH_MERGED"
 }
 
 function r2dissource {
@@ -246,7 +270,7 @@ function r2dissource {
 	_dis=$( mktemp )
 	sh -c "grep -v $_opts \"$RBASH_CONFIG\"" > $_dis
 	sort $_dis > $RBASH_CONFIG
-	rm $_dis
+	rm $_dis "$RBASH_MERGED"
 }
 
 export PS1='This is <MACHINE_NAME>\e[1;3<COLOR_CODE>m<MACHINE_COLORED_NAME>\e[0m: \w\n\$ '