feat(zsh): add ssh-menu and run shmft

This commit is contained in:
Matej Janezic 2024-02-19 15:54:50 +01:00
parent a9fe95254a
commit d7f8b52c98
Signed by: janezicmatej
GPG Key ID: 4298E230ED37B2C0
2 changed files with 95 additions and 83 deletions

View File

@ -1,9 +1,8 @@
alias s="ssh"
alias z="exec zsh" alias z="exec zsh"
alias t="tmux a || tmux new-session -s $(whoami) -c ~" alias t="tmux a || tmux new-session -s $(whoami) -c ~"
alias n=nvim_ve alias n=nvim_ve
# alias vim=nvim_ve # alias vim=nvim_ve
alias ssh-hosts="grep -P \"^Host ([^*]+)$\" $HOME/.ssh/config | sed 's/Host //'" alias s="ssh-menu"
# navigation # navigation
alias cdgit="cd $GGROOT" alias cdgit="cd $GGROOT"

View File

@ -1,125 +1,138 @@
function nvim_ve { function nvim_ve {
if [[ -e "$VIRTUAL_ENV" && -f "$VIRTUAL_ENV/bin/activate" ]]; then if [[ -e $VIRTUAL_ENV && -f "$VIRTUAL_ENV/bin/activate" ]]; then
source "$VIRTUAL_ENV/bin/activate" source "$VIRTUAL_ENV/bin/activate"
command nvim $@ command nvim $@
deactivate deactivate
else else
command nvim $@ command nvim $@
fi fi
} }
alias nvim=nvim_ve alias nvim=nvim_ve
function ffb { function ffb {
if ! [[ -f package.json ]]; then if ! [[ -f package.json ]]; then
echo "no package.json" echo "no package.json"
return return
fi fi
if [[ -f yarn.lock ]]; then if [[ -f yarn.lock ]]; then
PACKAGE_MANAGER=yarn PACKAGE_MANAGER=yarn
else else
PACKAGE_MANAGER=npm PACKAGE_MANAGER=npm
fi fi
if [[ -n $(grep "react-scripts" package.json) ]]; then if [[ -n $(grep "react-scripts" package.json) ]]; then
BROWSER=none FORCE_COLOR=true "$PACKAGE_MANAGER" start | cat BROWSER=none FORCE_COLOR=true "$PACKAGE_MANAGER" start | cat
fi fi
} }
function afm { function afm {
RES=$(curl -s "https://$1/api/monitoring/requirements") RES=$(curl -s "https://$1/api/monitoring/requirements")
COUNT=$(echo "$RES" | grep -c $2) COUNT=$(echo "$RES" | grep -c $2)
if [[ $COUNT -ge 0 ]]; then if [[ $COUNT -ge 0 ]]; then
VER=$(echo "$RES" | jq '.[] | select(.name | contains("'"$2"'")).version') VER=$(echo "$RES" | jq '.[] | select(.name | contains("'"$2"'")).version')
# OP=$(echo "$RES" | jq '.[] | select(.name | contains("'"$2"'")).requirement?[0][0]') # OP=$(echo "$RES" | jq '.[] | select(.name | contains("'"$2"'")).requirement?[0][0]')
# echo "$2""$(echo "$OP" | tr -d '"')""$(echo "$VER" | tr -d '"')" # echo "$2""$(echo "$OP" | tr -d '"')""$(echo "$VER" | tr -d '"')"
echo "$2""==""$(echo "$VER" | tr -d '"')" echo "${2}==$(echo "$VER" | tr -d '"')"
fi fi
} }
function nukepip { function nukepip {
pip uninstall $(pip freeze) -y pip uninstall $(pip freeze) -y
pip install -r $(pyenv root)/default-packages pip install -r $(pyenv root)/default-packages
} }
function pyinit { function pyinit {
if [[ -f .python-version ]]; then if [[ -f .python-version ]]; then
echo "found .python-version, stopping" echo "found .python-version, stopping"
return return
fi fi
DIRNAME=$(basename "$PWD") DIRNAME=$(basename "$PWD")
if [[ $(pyenv versions | grep -E "/${DIRNAME}$") ]]; then if [[ $(pyenv versions | grep -E "/${DIRNAME}$") ]]; then
echo "found existing version with this name, setting..." echo "found existing version with this name, setting..."
pyenv local "$DIRNAME"
return
fi
if [[ -z $1 ]]; then
echo "no python version provided, defaulting to $(pyenv version-name)"
VERSION=$(pyenv version-name)
else
VERSION=$1
fi
pyenv virtualenv "$VERSION" "$DIRNAME"
pyenv local "$DIRNAME" pyenv local "$DIRNAME"
return
fi
if [[ -z $1 ]]; then
echo "no python version provided, defaulting to $(pyenv version-name)"
VERSION=$(pyenv version-name)
else
VERSION=$1
fi
pyenv virtualenv "$VERSION" "$DIRNAME"
pyenv local "$DIRNAME"
} }
function lh { function lh {
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
PORT=8000 PORT=8000
else else
PORT=$1 PORT=$1
fi fi
open "http://localhost:$PORT" open "http://localhost:$PORT"
} }
function dps { function dps {
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
docker ps --format table'{{ .ID }}\t{{ .Image }}\t{{ .Ports}}\t{{ .Names }}' docker ps --format table'{{ .ID }}\t{{ .Image }}\t{{ .Ports}}\t{{ .Names }}'
else else
docker ps --format table'{{ .ID }}\t{{ .Image }}\t{{ .Ports}}\t{{ .Names }}' | grep $1 docker ps --format table'{{ .ID }}\t{{ .Image }}\t{{ .Ports}}\t{{ .Names }}' | grep $1
fi fi
} }
function get_dump { function get_dump {
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
echo "provide ssh host" echo "provide ssh host"
return return
fi fi
if [[ -z $2 ]]; then if [[ -z $2 ]]; then
echo "provide dump destination" echo "provide dump destination"
return return
fi fi
selected=$(ssh "$1" docker ps --format "{{.Names}}" | fzf) selected=$(ssh "$1" docker ps --format "{{.Names}}" | fzf)
if [[ -z $selected ]]; then if [[ -z $selected ]]; then
return return
fi fi
ssh "$1" docker exec "$selected" pg_dump -U db --format=c db > "$2$(date +'%Y-%m-%dT%H.%M.%S%z')" ssh "$1" docker exec "$selected" pg_dump -U db --format=c db >"$2$(date +'%Y-%m-%dT%H.%M.%S%z')"
} }
function ggcompile { function ggcompile {
find -L $GGROOT -mindepth 1 -maxdepth 5 -type d -name .git -prune | xargs -n 1 dirname > "$GGROOT/compiled" find -L "$GGROOT" -mindepth 1 -maxdepth 5 -type d -name .git -prune \
-exec dirname {} \; >"$GGROOT/compiled"
} }
function tssh { function tssh {
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
echo "provide ssh host" echo "provide ssh host"
return return
fi fi
ssh -t "$@" "command -v tmux && (tmux a || tmux new-session -s gorazd -c ~) || bash" ssh -t "$@" "command -v tmux && (tmux a || tmux new-session -s gorazd -c ~) || bash"
}
function ssh-menu {
selected=$(
grep 'Host .*' ~/.ssh/config \
| grep -v '*' \
| sed 's/Host \(.*\)/\1/' \
| fzf --cycle --bind 'tab:toggle-up,btab:toggle-down'
)
if [[ -z $selected ]]; then
return
fi
ssh "$selected"
} }