Update sshc command to respect sourcing files in zshrc
This commit is contained in:
parent
08aea86eae
commit
cffe649ad6
22
zshrc
22
zshrc
@ -65,6 +65,7 @@ find_up () {
|
|||||||
command-exists () {
|
command-exists () {
|
||||||
return $(command -v $1 >/dev/null);
|
return $(command -v $1 >/dev/null);
|
||||||
}
|
}
|
||||||
|
NEWLINE=$'\n'
|
||||||
|
|
||||||
#---------------------------------- Listings ----------------------------------
|
#---------------------------------- Listings ----------------------------------
|
||||||
|
|
||||||
@ -530,14 +531,33 @@ sshc() {
|
|||||||
local source target
|
local source target
|
||||||
source=${ZDOTDIR:-$HOME}
|
source=${ZDOTDIR:-$HOME}
|
||||||
target="/tmp/.zdot-${RANDOM}"
|
target="/tmp/.zdot-${RANDOM}"
|
||||||
|
consolidate-config
|
||||||
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" -o "ControlMaster=yes" -o "ControlPersist=yes" $1 'false'
|
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" -o "ControlMaster=yes" -o "ControlPersist=yes" $1 'false'
|
||||||
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" $1 "mkdir $target"
|
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" $1 "mkdir $target"
|
||||||
scp -q -o "ControlPath=/tmp/.cm-%r@%h:%p" $source/.zshrc $1:$target/.zshrc
|
scp -q -o "ControlPath=/tmp/.cm-%r@%h:%p" $source/.zshrc-consolidated $1:$target/.zshrc
|
||||||
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" $1 -t "ZDOTDIR=$target exec zsh -l"
|
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" $1 -t "ZDOTDIR=$target exec zsh -l"
|
||||||
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" $1 "rm -r $target"
|
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" $1 "rm -r $target"
|
||||||
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" -O stop $1
|
ssh -q -o "ControlPath=/tmp/.cm-%r@%h:%p" -O stop $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
consolidate-config() {
|
||||||
|
local initial final
|
||||||
|
initial=${ZDOTDIR:-$HOME}/.zshrc
|
||||||
|
final=${ZDOTDIR:-$HOME}/.zshrc-consolidated
|
||||||
|
cp $initial $final
|
||||||
|
while true; do
|
||||||
|
found=$(grep -oP '^source \K.*$' $final)
|
||||||
|
if [[ -z $found ]]; then
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
replaced=${(e)found}
|
||||||
|
if [[ $replaced != /* ]]; then
|
||||||
|
replaced=$(dirname $final)/$replaced
|
||||||
|
fi
|
||||||
|
sed -i "\#^source $found\$# r $replaced${NEWLINE}d" $final
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
#---------------------------------- Miscellaneous ----------------------------
|
#---------------------------------- Miscellaneous ----------------------------
|
||||||
|
|
||||||
setopt extended_glob
|
setopt extended_glob
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user