add warp plugin
This commit is contained in:
parent
96e4e5dd03
commit
ac72805dd1
63
plugins/warp/warp.plugin.zsh
Normal file
63
plugins/warp/warp.plugin.zsh
Normal file
@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
#https://github.com/jpalardy/warp
|
||||
warp() {
|
||||
# ensure SOURCE file exists
|
||||
local SOURCE="$HOME/.warp"
|
||||
if [ ! -f "$SOURCE" ]; then
|
||||
echo "$SOURCE does not exist..."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# cleanup TARGET file
|
||||
local TARGET=$HOME/.picked
|
||||
if [ -e "$TARGET" ]; then
|
||||
rm "$TARGET"
|
||||
fi
|
||||
|
||||
# make a selection, with vim
|
||||
cat "$SOURCE" | vim -c "setlocal noreadonly" \
|
||||
-c "setlocal cursorline" \
|
||||
-c "setlocal number" \
|
||||
-c "nnoremap <buffer> <CR> V:w! ~/.picked<CR>:qa!<CR>" \
|
||||
-c "vnoremap <buffer> <CR> :w! ~/.picked<CR>:qa!<CR>" \
|
||||
-R -
|
||||
# nothing was selected, abort
|
||||
if [ ! -e "$TARGET" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
# transform seletion in ssh command
|
||||
local SSH=${SSH:-ssh}
|
||||
local COMMAND=""
|
||||
if [ $(cat "$TARGET" | wc -l) -gt 1 ]; then
|
||||
# determine which clusterssh to use based on os
|
||||
unamestr=`uname`
|
||||
if [[ "$unamestr" == 'Linux' ]]; then
|
||||
SSH=${MULTISSH:-cssh}
|
||||
elif [[ "$unamestr" == 'Darwin' ]]; then
|
||||
SSH=${MULTISSH:-csshX}
|
||||
fi
|
||||
COMMAND="$(awk -v cmd=$SSH 'BEGIN {printf cmd} {printf " " $1} END { print "" }' "$TARGET")"
|
||||
else
|
||||
COMMAND="$(awk -v cmd=$SSH '{ n = split($1, parts, ":"); if (n == 2) { print cmd, "-p", parts[2], parts[1] } else { print cmd, $1 } }' "$TARGET")"
|
||||
fi
|
||||
|
||||
# add the command to the bash history as if we had typed it, will only work if sourced
|
||||
# Determine which history command to use based on shell
|
||||
if [ -n "$BASH_VERSION" ]; then
|
||||
eval "history -s $COMMAND"
|
||||
elif [ -n "$ZSH_VERSION" ]; then
|
||||
eval "print -s $COMMAND"
|
||||
fi
|
||||
|
||||
# run the command
|
||||
eval $COMMAND
|
||||
}
|
||||
|
||||
# allow warp to be sourced without running
|
||||
if [[ $_ == $0 ]]; then
|
||||
warp
|
||||
else
|
||||
# Hide warp from history if using zsh and setopt histignorespace
|
||||
alias warp=" warp"
|
||||
fi
|
Loading…
Reference in New Issue
Block a user