# Usar una basura en vez de borrar sin mas function rm() { DIR=`date "+%y%m%dT%H%M%s"` mkdir -p "$HOME/.basura/$DIR" mv "$@" "$HOME/.basura/$DIR" } # Busca en la basura function busca() { find ~/.basura/ -name "*$@*" } # Sube cosas para compartir a mi servidor function upload_stuff() { for i in $@ do rsync -P -e ssh $i drymer@daemons.it:/var/www/blog/mierdas/ > /dev/null echo "https://daemons.it/mierdas/$i" done } # Actualiza kubectl function upgrade_kubectl (){ echo "Downloading kubectl..." version=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt); curl -s -L https://storage.googleapis.com/kubernetes-release/release/$version/bin/linux/amd64/kubectl -o /tmp/kubectl chmod +x /tmp/kubectl mv /tmp/kubectl ~/Scripts/bin/kubectl-$version ln -fs ~/Scripts/bin/kubectl-$version ~/Scripts/bin/kubectl echo "kubectl version: $version" } # Actualiza kops function upgrade_kops (){ echo "Downloading kops..." uri=$(curl -s https://github.com/kubernetes/kops/releases/latest -L | grep "kops-linux-amd64" | grep -v strong | cut -d '"' -f2) version=$(echo $uri | cut -d'/' -f6) curl -s -L https://github.com/$uri -o /tmp/kops chmod +x /tmp/kops mv /tmp/kops ~/Scripts/bin/kops-$version ln -fs ~/Scripts/bin/kops-$version ~/Scripts/bin/kops echo "kops version: $version" } # Limpiar ramas mergeadas function delete_old_branches(){ git checkout master for branch in `git branch --merged | grep -v master` do git branch -d $branch done } # Entra en un contenedor docker function enter(){ if [[ -z $2 ]] then command=bash else command=$4 fi docker exec -ti $1 $command } # Entra en un contenedor k8s function kenter(){ if [[ -z $4 ]] then command=bash else command="$4" fi kubectl exec -ti $1 $2 $3 $command } # Comprueba que los repositorios git de un repositorio tienen commits a hacer function git_updated() { for git in `ls --color=none` do if [[ -d $git ]] then cd $git gitstatus="`git status -s | awk '{print $2}'`" if [[ -n $gitstatus ]] then echo "- \033[0;31m$git\033[0m:\n$gitstatus" fi cd .. fi done } # Docker presentaciones function reveal () { function async () { sleep 3 && xdg-open http:localhost:8000 } async &! docker run -ti --name revealjs --rm -v `pwd`:/revealjs/files/ -p 8000:8000 revealjs } # Autocompletados ## kubectl KUBECTL_BIN=`which kubectl` function kubectl (){ if [[ -z $KUBECTL_SHOW_CONTEXT ]] then source <($KUBECTL_BIN completion zsh) source <(kops completion zsh) fi KUBECTL_SHOW_CONTEXT="k8s-$($KUBECTL_BIN config current-context)" $KUBECTL_BIN "$@" } ## molecule MOLECULE_BIN=`which molecule` function molecule() { if [[ -z $MOLECULE_SET ]] then MOLECULE_SET=True eval "$(_MOLECULE_COMPLETE=source molecule)" fi $MOLECULE_BIN "$@" } ## helm HELM_BIN=`which helm` function helm (){ if [[ -z $HELM_SHOW_CONTEXT ]] then source <($HELM_BIN completion zsh) fi $HELM_BIN "$@" } # fzf functions ## fkill - kill process fkill() { local pid pid=$(ps -ef | sed 1d | fzf -m | awk '{print $2}') if [ "x$pid" != "x" ] then echo $pid | xargs kill -${1:-9} fi } ## insert located file fzf-locate-widget() { local selected if selected=$(locate / | fzf -q "$LBUFFER"); then LBUFFER=$selected fi zle redisplay } zle -N fzf-locate-widget bindkey '\ei' fzf-locate-widget ## Docker stuff: https://medium.com/@calbertts/docker-and-fuzzy-finder-fzf-4c6416f5e0b5 runc() { export FZF_DEFAULT_OPTS='--height 90% --reverse --border' local image=$(docker images --format '{{.Repository}}:{{.Tag}}' | fzf-tmux --reverse --multi) if [[ $image != '' ]]; then echo -e "\n \033[1mDocker image:\033[0m" $image read -e -p $' \e[1mOptions: \e[0m' -i "-it --rm" options printf " \033[1mChoose the command: \033[0m" local cmd=$(echo -e "/bin/bash\nsh" | fzf-tmux --reverse --multi) if [[ $cmd == '' ]]; then read -e -p $' \e[1mCustom command: \e[0m' cmd fi echo -e " \033[1mCommand: \033[0m" $cmd export FZF_DEFAULT_COMMAND='find ./ -type d -maxdepth 1 -exec basename {} \;' printf " \033[1mChoose the volume: \033[0m" local volume=$(fzf-tmux --reverse --multi) local curDir=${PWD##*/} if [[ $volume == '.' ]]; then echo -e " \033[1mVolume: \033[0m" $volume volume="`pwd`:/$curDir -w /$curDir" else echo -e " \033[1mVolume: \033[0m" $volume volume="`pwd`/$volume:/$volume -w /$volume" fi export FZF_DEFAULT_COMMAND="" export FZF_DEFAULT_OPTS="" history -s runc history -s docker run $options -v $volume $image $cmd echo '' docker run $options -v $volume $image $cmd fi } stopc() { export FZF_DEFAULT_OPTS='--height 90% --reverse --border' local container=$(docker ps --format '{{.Names}} => {{.Image}}' | fzf-tmux --reverse --multi | awk -F '\\=>' '{print $1}') if [[ $container != '' ]]; then echo -e "\n \033[1mDocker container:\033[0m" $container printf " \033[1mRemove?: \033[0m" local cmd=$(echo -e "No\nYes" | fzf-tmux --reverse --multi) if [[ $cmd != '' ]]; then if [[ $cmd == 'No' ]]; then echo -e "\n Stopping $container ...\n" history -s stopc history -s docker stop $container docker stop $container > /dev/null else echo -e "\n Stopping $container ..." history -s stopc history -s docker stop $container docker stop $container > /dev/null echo -e " Removing $container ...\n" history -s stopc history -s docker rm $container docker rm $container > /dev/null fi fi fi export FZF_DEFAULT_OPTS="" } runinc() { export FZF_DEFAULT_OPTS='--height 90% --reverse --border' local container=$(docker ps --format '{{.Names}} => {{.Image}}' | fzf-tmux --reverse --multi | awk -F '\\=>' '{print $1}') if [[ $container != '' ]]; then echo -e "\n \033[1mDocker container:\033[0m" $container read -e -p $' \e[1mOptions: \e[0m' -i "-it" options if [[ $@ == '' ]]; then read -e -p $' \e[1mCommand: \e[0m' cmd else cmd="$@" fi echo '' history -s runinc "$@" history -s docker exec $options $container $cmd docker exec $options $container $cmd echo '' fi export FZF_DEFAULT_OPTS="" } showipc() { export FZF_DEFAULT_OPTS='--height 90% --reverse --border' local container=$(docker ps -a --format '{{.Names}} => {{.Image}}' | fzf-tmux --reverse --multi | awk -F '\\=>' '{print $1}') if [[ $container != '' ]]; then local network=$(docker inspect $container -f '{{.NetworkSettings.Networks}}' | awk -F 'map\\[|:' '{print $2}') echo -e "\n \033[1mDocker container:\033[0m" $container history -s showipc history -s docker inspect -f "{{.NetworkSettings.Networks.${network}.IPAddress}}" $container echo -e " \033[1mNetwork:\033[0m" $network echo -e " \033[1mIP Address:\033[0m" $(docker inspect -f "{{.NetworkSettings.Networks.${network}.IPAddress}}" $container) "\n" fi } # Clean docker function docker_clean(){ echo "Deleting stopped containers..." docker rm $(docker ps -a -q | awk '{print $1}') echo "Deleting volumes..." docker volume rm $(docker volume ls) echo "Deleting none images..." docker rmi $(docker images -f "dangling=true" -q) }