lib
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
function sed_replace {
|
||||
REGEX=$1
|
||||
STRING=$2
|
||||
FILE=$3
|
||||
if ! grep -Eq "$REGEX" "$FILE"; then
|
||||
builtin echo -e "$STRING" >>"$FILE"
|
||||
echo 'appended'
|
||||
else
|
||||
sed -Ei "s|$REGEX|$STRING|g" "$FILE"
|
||||
echo 'replaced'
|
||||
fi
|
||||
}
|
||||
|
||||
function bashrc_count_lines {
|
||||
wc -l "$HOME/.bashrc" | cut -d' ' -f1
|
||||
}
|
||||
|
||||
function bashrc_watch_start {
|
||||
if [[ -z "${BASHRC_LINES+set}" ]]; then
|
||||
BASHRC_LINES=$(bashrc_count_lines)
|
||||
else
|
||||
BASHRC_EVOLVED=true
|
||||
fi
|
||||
}
|
||||
|
||||
function bashrc_watch_end {
|
||||
bashrc_lines=$(bashrc_count_lines)
|
||||
if [[ "$BASHRC_LINES" -lt "$bashrc_lines" || -n "${BASHRC_EVOLVED+set}" ]]; then
|
||||
echo
|
||||
echo '*****************************'
|
||||
echo '* BASHRC has evolved! *'
|
||||
echo '* please synchronize: *'
|
||||
echo '* *'
|
||||
echo "* source ~/.bashrc *"
|
||||
echo '* *'
|
||||
echo '*****************************'
|
||||
echo
|
||||
fi
|
||||
}
|
||||
|
||||
function _bashrc_env_with_prefix {
|
||||
arg1="$1"
|
||||
arg2="$2"
|
||||
prefix="$3"
|
||||
if printenv | grep -q "$arg1"; then
|
||||
real_value=$(eval "echo \$$arg1")
|
||||
echo "success for $arg1 = $real_value"
|
||||
else
|
||||
case "$prefix" in
|
||||
export)
|
||||
session_line="export ${arg1}=${arg2}"
|
||||
regex="$session_line"
|
||||
;;
|
||||
eval)
|
||||
session_line="eval \"\$($arg2)\""
|
||||
regex="eval \"\\\$\\($arg2\\)\""
|
||||
;;
|
||||
*) echo "unknown prefix $prefix" && exit 10 ;;
|
||||
esac
|
||||
sed_replace "$regex" "$session_line" "$HOME/.bashrc" &>/dev/null
|
||||
eval "$session_line"
|
||||
set +e
|
||||
trap - EXIT
|
||||
eval "BASHRC_LINES=$BASHRC_LINES $0"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
function bashrc_export {
|
||||
_bashrc_env_with_prefix "$1" "$2" 'export'
|
||||
}
|
||||
|
||||
function bashrc_eval {
|
||||
_bashrc_env_with_prefix "$1" "$2" 'eval'
|
||||
}
|
||||
|
||||
function on_exit() {
|
||||
rv=$?
|
||||
# [[ $rv -eq 0 ]] && bashrc_watch_end
|
||||
bashrc_watch_end
|
||||
exit $rv
|
||||
}
|
||||
|
||||
bashrc_watch_start
|
||||
trap "on_exit" EXIT
|
||||
Reference in New Issue
Block a user