273 lines
7.3 KiB
Plaintext
273 lines
7.3 KiB
Plaintext
# 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)
|
|
}
|