added new stuff
This commit is contained in:
parent
5024639019
commit
a0d198cdcb
17 changed files with 4244 additions and 5 deletions
0
bin/revolver
Normal file → Executable file
0
bin/revolver
Normal file → Executable file
2
config/tmux/tmux.extra.conf
Normal file
2
config/tmux/tmux.extra.conf
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
set -g default-terminal $ZSH_TMUX_TERM
|
||||||
|
source $HOME/.tmux.conf
|
1
config/tmux/tmux.only.conf
Normal file
1
config/tmux/tmux.only.conf
Normal file
|
@ -0,0 +1 @@
|
||||||
|
set -g default-terminal $ZSH_TMUX_TERM
|
139
config/zsh/os-specific/archlinux.zsh
Normal file
139
config/zsh/os-specific/archlinux.zsh
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
if (( $+commands[yaourt] )); then
|
||||||
|
alias yaconf='yaourt -C'
|
||||||
|
alias yaupg='yaourt -Syua'
|
||||||
|
alias yasu='yaourt -Syua --noconfirm'
|
||||||
|
alias yain='yaourt -S'
|
||||||
|
alias yains='yaourt -U'
|
||||||
|
alias yare='yaourt -R'
|
||||||
|
alias yarem='yaourt -Rns'
|
||||||
|
alias yarep='yaourt -Si'
|
||||||
|
alias yareps='yaourt -Ss'
|
||||||
|
alias yaloc='yaourt -Qi'
|
||||||
|
alias yalocs='yaourt -Qs'
|
||||||
|
alias yalst='yaourt -Qe'
|
||||||
|
alias yaorph='yaourt -Qtd'
|
||||||
|
alias yainsd='yaourt -S --asdeps'
|
||||||
|
alias yamir='yaourt -Syy'
|
||||||
|
|
||||||
|
|
||||||
|
if (( $+commands[abs] && $+commands[aur] )); then
|
||||||
|
alias yaupd='yaourt -Sy && sudo abs && sudo aur'
|
||||||
|
elif (( $+commands[abs] )); then
|
||||||
|
alias yaupd='yaourt -Sy && sudo abs'
|
||||||
|
elif (( $+commands[aur] )); then
|
||||||
|
alias yaupd='yaourt -Sy && sudo aur'
|
||||||
|
else
|
||||||
|
alias yaupd='yaourt -Sy'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $+commands[pacaur] )); then
|
||||||
|
alias paupg='pacaur -Syua'
|
||||||
|
alias pasu='pacaur -Syua --noconfirm'
|
||||||
|
alias pain='pacaur -S'
|
||||||
|
alias pains='pacaur -U'
|
||||||
|
alias pare='pacaur -R'
|
||||||
|
alias parem='pacaur -Rns'
|
||||||
|
alias parep='pacaur -Si'
|
||||||
|
alias pareps='pacaur -Ss'
|
||||||
|
alias paloc='pacaur -Qi'
|
||||||
|
alias palocs='pacaur -Qs'
|
||||||
|
alias palst='pacaur -Qe'
|
||||||
|
alias paorph='pacaur -Qtd'
|
||||||
|
alias painsd='pacaur -S --asdeps'
|
||||||
|
alias pamir='pacaur -Syy'
|
||||||
|
|
||||||
|
if (( $+commands[abs] && $+commands[aur] )); then
|
||||||
|
alias paupd='pacaur -Sy && sudo abs && sudo aur'
|
||||||
|
elif (( $+commands[abs] )); then
|
||||||
|
alias paupd='pacaur -Sy && sudo abs'
|
||||||
|
elif (( $+commands[aur] )); then
|
||||||
|
alias paupd='pacaur -Sy && sudo aur'
|
||||||
|
else
|
||||||
|
alias paupd='pacaur -Sy'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $+commands[pacaur] )); then
|
||||||
|
upgrade() {
|
||||||
|
pacaur -Syu
|
||||||
|
}
|
||||||
|
elif (( $+commands[yaourt] )); then
|
||||||
|
upgrade() {
|
||||||
|
yaourt -Syu
|
||||||
|
}
|
||||||
|
else
|
||||||
|
upgrade() {
|
||||||
|
sudo pacman -Syu
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
|
||||||
|
alias pacupg='sudo pacman -Syu'
|
||||||
|
alias pacin='sudo pacman -S'
|
||||||
|
alias pacins='sudo pacman -U'
|
||||||
|
alias pacre='sudo pacman -R'
|
||||||
|
alias pacrem='sudo pacman -Rns'
|
||||||
|
alias pacrep='pacman -Si'
|
||||||
|
alias pacreps='pacman -Ss'
|
||||||
|
alias pacloc='pacman -Qi'
|
||||||
|
alias paclocs='pacman -Qs'
|
||||||
|
alias pacinsd='sudo pacman -S --asdeps'
|
||||||
|
alias pacmir='sudo pacman -Syy'
|
||||||
|
alias paclsorphans='sudo pacman -Qdt'
|
||||||
|
alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)'
|
||||||
|
alias pacfileupg='sudo pacman -Fy'
|
||||||
|
alias pacfiles='pacman tFs'
|
||||||
|
|
||||||
|
|
||||||
|
if (( $+commands[abs] && $+commands[aur] )); then
|
||||||
|
alias pacupd='sudo pacman -Sy && sudo abs && sudo aur'
|
||||||
|
elif (( $+commands[abs] )); then
|
||||||
|
alias pacupd='sudo pacman -Sy && sudo abs'
|
||||||
|
elif (( $+commands[aur] )); then
|
||||||
|
alias pacupd='sudo pacman -Sy && sudo aur'
|
||||||
|
else
|
||||||
|
alias pacupd='sudo pacman -Sy'
|
||||||
|
fi
|
||||||
|
|
||||||
|
paclist() {
|
||||||
|
# Source: https://bbs.archlinux.org/viewtopic.php?id=93683
|
||||||
|
LC_ALL=C pacman -Qei $(pacman -Qu | cut -d " " -f 1) | \
|
||||||
|
awk 'BEGIN {FS=":"} /^Name/{printf("\033[1;36m%s\033[1;37m", $2)} /^Description/{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
pacdisowned() {
|
||||||
|
emulate -L zsh
|
||||||
|
|
||||||
|
tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$
|
||||||
|
db=$tmp/db
|
||||||
|
fs=$tmp/fs
|
||||||
|
|
||||||
|
mkdir "$tmp"
|
||||||
|
trap 'rm -rf "$tmp"' EXIT
|
||||||
|
|
||||||
|
pacman -Qlq | sort -u > "$db"
|
||||||
|
|
||||||
|
find /bin /etc /lib /sbin /usr ! -name lost+found \
|
||||||
|
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
|
||||||
|
|
||||||
|
comm -23 "$fs" "$db"
|
||||||
|
}
|
||||||
|
|
||||||
|
pacmanallkeys() {
|
||||||
|
emulate -L zsh
|
||||||
|
curl -s https://www.archlinux.org/people/{developers,trustedusers}/ | \
|
||||||
|
awk -F\" '(/pgp.mit.edu/) { sub(/.*search=0x/,""); print $1}' | \
|
||||||
|
xargs sudo pacman-key --recv-keys
|
||||||
|
}
|
||||||
|
|
||||||
|
pacmansignkeys() {
|
||||||
|
emulate -L zsh
|
||||||
|
for key in $*; do
|
||||||
|
sudo pacman-key --recv-keys $key
|
||||||
|
sudo pacman-key --lsign-key $key
|
||||||
|
printf 'trust\n3\n' | sudo gpg --homedir /etc/pacman.d/gnupg \
|
||||||
|
--no-permission-warning --command-fd 0 --edit-key $key
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
230
config/zsh/os-specific/debian.zsh
Normal file
230
config/zsh/os-specific/debian.zsh
Normal file
|
@ -0,0 +1,230 @@
|
||||||
|
# Authors:
|
||||||
|
# https://github.com/AlexBio
|
||||||
|
# https://github.com/dbb
|
||||||
|
# https://github.com/Mappleconfusers
|
||||||
|
#
|
||||||
|
# Debian-related zsh aliases and functions for zsh
|
||||||
|
|
||||||
|
# Use aptitude if installed, or apt-get if not.
|
||||||
|
# You can just set apt_pref='apt-get' to override it.
|
||||||
|
if [[ -e $( which -p aptitude 2>&1 ) ]]; then
|
||||||
|
apt_pref='aptitude'
|
||||||
|
apt_upgr='safe-upgrade'
|
||||||
|
else
|
||||||
|
apt_pref='apt-get'
|
||||||
|
apt_upgr='upgrade'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use sudo by default if it's installed
|
||||||
|
if [[ -e $( which -p sudo 2>&1 ) ]]; then
|
||||||
|
use_sudo=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Aliases ###################################################################
|
||||||
|
# These are for more obscure uses of apt-get and aptitude that aren't covered
|
||||||
|
# below.
|
||||||
|
alias age='apt-get'
|
||||||
|
alias api='aptitude'
|
||||||
|
|
||||||
|
# Some self-explanatory aliases
|
||||||
|
alias acs="apt-cache search"
|
||||||
|
alias aps='aptitude search'
|
||||||
|
alias as="aptitude -F \"* %p -> %d \n(%v/%V)\" \
|
||||||
|
--no-gui --disable-columns search" # search package
|
||||||
|
|
||||||
|
# apt-file
|
||||||
|
alias afs='apt-file search --regexp'
|
||||||
|
|
||||||
|
|
||||||
|
# These are apt-get only
|
||||||
|
alias asrc='apt-get source'
|
||||||
|
alias app='apt-cache policy'
|
||||||
|
|
||||||
|
# superuser operations ######################################################
|
||||||
|
if [[ $use_sudo -eq 1 ]]; then
|
||||||
|
# commands using sudo #######
|
||||||
|
alias aac='sudo $apt_pref autoclean'
|
||||||
|
alias abd='sudo $apt_pref build-dep'
|
||||||
|
alias ac='sudo $apt_pref clean'
|
||||||
|
alias ad='sudo $apt_pref update'
|
||||||
|
alias adg='sudo $apt_pref update && sudo $apt_pref $apt_upgr'
|
||||||
|
alias adu='sudo $apt_pref update && sudo $apt_pref dist-upgrade'
|
||||||
|
alias afu='sudo apt-file update'
|
||||||
|
alias ag='sudo $apt_pref $apt_upgr'
|
||||||
|
alias ai='sudo $apt_pref install'
|
||||||
|
# Install all packages given on the command line while using only the first word of each line:
|
||||||
|
# acs ... | ail
|
||||||
|
alias ail="sed -e 's/ */ /g' -e 's/ *//' | cut -s -d ' ' -f 1 | "' xargs sudo $apt_pref install'
|
||||||
|
alias ap='sudo $apt_pref purge'
|
||||||
|
alias ar='sudo $apt_pref remove'
|
||||||
|
|
||||||
|
# apt-get only
|
||||||
|
alias ads='sudo apt-get dselect-upgrade'
|
||||||
|
|
||||||
|
# Install all .deb files in the current directory.
|
||||||
|
# Warning: you will need to put the glob in single quotes if you use:
|
||||||
|
# glob_subst
|
||||||
|
alias dia='sudo dpkg -i ./*.deb'
|
||||||
|
alias di='sudo dpkg -i'
|
||||||
|
|
||||||
|
# Remove ALL kernel images and headers EXCEPT the one in use
|
||||||
|
alias kclean='sudo aptitude remove -P ?and(~i~nlinux-(ima|hea) \
|
||||||
|
?not(~n`uname -r`))'
|
||||||
|
|
||||||
|
|
||||||
|
# commands using su #########
|
||||||
|
else
|
||||||
|
alias aac='su -ls \'$apt_pref autoclean\' root'
|
||||||
|
abd() {
|
||||||
|
cmd="su -lc '$apt_pref build-dep $@' root"
|
||||||
|
print "$cmd"
|
||||||
|
eval "$cmd"
|
||||||
|
}
|
||||||
|
alias ac='su -ls \'$apt_pref clean\' root'
|
||||||
|
alias ad='su -lc \'$apt_pref update\' root'
|
||||||
|
alias adg='su -lc \'$apt_pref update && aptitude $apt_upgr\' root'
|
||||||
|
alias adu='su -lc \'$apt_pref update && aptitude dist-upgrade\' root'
|
||||||
|
alias afu='su -lc "apt-file update"'
|
||||||
|
alias ag='su -lc \'$apt_pref $apt_upgr\' root'
|
||||||
|
ai() {
|
||||||
|
cmd="su -lc 'aptitude -P install $@' root"
|
||||||
|
print "$cmd"
|
||||||
|
eval "$cmd"
|
||||||
|
}
|
||||||
|
ap() {
|
||||||
|
cmd="su -lc '$apt_pref -P purge $@' root"
|
||||||
|
print "$cmd"
|
||||||
|
eval "$cmd"
|
||||||
|
}
|
||||||
|
ar() {
|
||||||
|
cmd="su -lc '$apt_pref -P remove $@' root"
|
||||||
|
print "$cmd"
|
||||||
|
eval "$cmd"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install all .deb files in the current directory
|
||||||
|
# Assumes glob_subst is off
|
||||||
|
alias dia='su -lc "dpkg -i ./*.deb" root'
|
||||||
|
alias di='su -lc "dpkg -i" root'
|
||||||
|
|
||||||
|
# Remove ALL kernel images and headers EXCEPT the one in use
|
||||||
|
alias kclean='su -lc '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) \
|
||||||
|
?not(~n`uname -r`))'\'' root'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Completion ################################################################
|
||||||
|
|
||||||
|
#
|
||||||
|
# Registers a compdef for $1 that calls $apt_pref with the commands $2
|
||||||
|
# To do that it creates a new completion function called _apt_pref_$2
|
||||||
|
#
|
||||||
|
apt_pref_compdef() {
|
||||||
|
local f fb
|
||||||
|
f="_apt_pref_${2}"
|
||||||
|
|
||||||
|
eval "function ${f}() {
|
||||||
|
shift words;
|
||||||
|
service=\"\$apt_pref\";
|
||||||
|
words=(\"\$apt_pref\" '$2' \$words);
|
||||||
|
((CURRENT++))
|
||||||
|
test \"\${apt_pref}\" = 'aptitude' && _aptitude || _apt
|
||||||
|
}"
|
||||||
|
|
||||||
|
compdef "$f" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
apt_pref_compdef aac "autoclean"
|
||||||
|
apt_pref_compdef abd "build-dep"
|
||||||
|
apt_pref_compdef ac "clean"
|
||||||
|
apt_pref_compdef ad "update"
|
||||||
|
apt_pref_compdef afu "update"
|
||||||
|
apt_pref_compdef ag "$apt_upgr"
|
||||||
|
apt_pref_compdef ai "install"
|
||||||
|
apt_pref_compdef ail "install"
|
||||||
|
apt_pref_compdef ap "purge"
|
||||||
|
apt_pref_compdef ar "remove"
|
||||||
|
apt_pref_compdef ads "dselect-upgrade"
|
||||||
|
|
||||||
|
# Misc. #####################################################################
|
||||||
|
# print all installed packages
|
||||||
|
alias allpkgs='aptitude search -F "%p" --disable-columns ~i'
|
||||||
|
|
||||||
|
# Create a basic .deb package
|
||||||
|
alias mydeb='time dpkg-buildpackage -rfakeroot -us -uc'
|
||||||
|
|
||||||
|
|
||||||
|
# Functions #################################################################
|
||||||
|
# create a simple script that can be used to 'duplicate' a system
|
||||||
|
apt-copy() {
|
||||||
|
print '#!/bin/sh'"\n" > apt-copy.sh
|
||||||
|
|
||||||
|
cmd='$apt_pref install'
|
||||||
|
|
||||||
|
for p in ${(f)"$(aptitude search -F "%p" --disable-columns \~i)"}; {
|
||||||
|
cmd="${cmd} ${p}"
|
||||||
|
}
|
||||||
|
|
||||||
|
print $cmd "\n" >> apt-copy.sh
|
||||||
|
|
||||||
|
chmod +x apt-copy.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
# Prints apt history
|
||||||
|
# Usage:
|
||||||
|
# apt-history install
|
||||||
|
# apt-history upgrade
|
||||||
|
# apt-history remove
|
||||||
|
# apt-history rollback
|
||||||
|
# apt-history list
|
||||||
|
# Based On: http://linuxcommando.blogspot.com/2008/08/how-to-show-apt-log-history.html
|
||||||
|
apt-history () {
|
||||||
|
case "$1" in
|
||||||
|
install)
|
||||||
|
zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*)
|
||||||
|
;;
|
||||||
|
upgrade|remove)
|
||||||
|
zgrep --no-filename $1 $(ls -rt /var/log/dpkg*)
|
||||||
|
;;
|
||||||
|
rollback)
|
||||||
|
zgrep --no-filename upgrade $(ls -rt /var/log/dpkg*) | \
|
||||||
|
grep "$2" -A10000000 | \
|
||||||
|
grep "$3" -B10000000 | \
|
||||||
|
awk '{print $4"="$5}'
|
||||||
|
;;
|
||||||
|
list)
|
||||||
|
zgrep --no-filename '' $(ls -rt /var/log/dpkg*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Parameters:"
|
||||||
|
echo " install - Lists all packages that have been installed."
|
||||||
|
echo " upgrade - Lists all packages that have been upgraded."
|
||||||
|
echo " remove - Lists all packages that have been removed."
|
||||||
|
echo " rollback - Lists rollback information."
|
||||||
|
echo " list - Lists all contains of dpkg logs."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Kernel-package building shortcut
|
||||||
|
kerndeb () {
|
||||||
|
# temporarily unset MAKEFLAGS ( '-j3' will fail )
|
||||||
|
MAKEFLAGS=$( print - $MAKEFLAGS | perl -pe 's/-j\s*[\d]+//g' )
|
||||||
|
print '$MAKEFLAGS set to '"'$MAKEFLAGS'"
|
||||||
|
appendage='-custom' # this shows up in $ (uname -r )
|
||||||
|
revision=$(date +"%Y%m%d") # this shows up in the .deb file name
|
||||||
|
|
||||||
|
make-kpkg clean
|
||||||
|
|
||||||
|
time fakeroot make-kpkg --append-to-version "$appendage" --revision \
|
||||||
|
"$revision" kernel_image kernel_headers
|
||||||
|
}
|
||||||
|
|
||||||
|
# List packages by size
|
||||||
|
function apt-list-packages {
|
||||||
|
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | \
|
||||||
|
grep -v deinstall | \
|
||||||
|
sort -n | \
|
||||||
|
awk '{print $1" "$2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ export ZSH="${LIB}/ohmyzsh"
|
||||||
export PATH="${HOME}/dotfiles/bin:/opt/android-sdk/build-tools/26.0.0/:${PATH}"
|
export PATH="${HOME}/dotfiles/bin:/opt/android-sdk/build-tools/26.0.0/:${PATH}"
|
||||||
export EDITOR='nano'
|
export EDITOR='nano'
|
||||||
export TERM=linux
|
export TERM=linux
|
||||||
fpath=(${LIB}/completions/src $fpath)
|
fpath+=(${LIB}/completions/src ${LIB}/local)
|
||||||
|
|
||||||
# Settings
|
# Settings
|
||||||
ZSH_THEME="mortalscumbag"
|
ZSH_THEME="mortalscumbag"
|
||||||
|
@ -14,11 +14,9 @@ DISABLE_AUTO_UPDATE="true"
|
||||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets)
|
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets)
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
plugins=(git vagrant docker systemd tmux command-not-found extract)
|
|
||||||
case $(uname -n) in
|
case $(uname -n) in
|
||||||
"megumi") plugins+=(archlinux) ;;
|
megumi|sayaka) source ${DOTFILES_CONFIG}/zsh/os-specific/archlinux.zsh ;;
|
||||||
"sayaka") plugins+=(archlinux) ;;
|
git) source ${DOTFILES_CONFIG}/zsh/os-specific/debian.zsh ;;
|
||||||
"git") plugins+=(debian) ;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Fix MobaXterm Home/End key with ZSH
|
# Fix MobaXterm Home/End key with ZSH
|
||||||
|
|
33
config/zsh/zshrc.d/cnf.zsh
Normal file
33
config/zsh/zshrc.d/cnf.zsh
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# Uses the command-not-found package zsh support
|
||||||
|
# as seen in http://www.porcheron.info/command-not-found-for-zsh/
|
||||||
|
# this is installed in Ubuntu
|
||||||
|
|
||||||
|
[[ -e /etc/zsh_command_not_found ]] && source /etc/zsh_command_not_found
|
||||||
|
|
||||||
|
# Arch Linux command-not-found support, you must have package pkgfile installed
|
||||||
|
# https://wiki.archlinux.org/index.php/Pkgfile#.22Command_not_found.22_hook
|
||||||
|
[[ -e /usr/share/doc/pkgfile/command-not-found.zsh ]] && source /usr/share/doc/pkgfile/command-not-found.zsh
|
||||||
|
|
||||||
|
# Fedora command-not-found support
|
||||||
|
if [ -f /usr/libexec/pk-command-not-found ]; then
|
||||||
|
command_not_found_handler () {
|
||||||
|
runcnf=1
|
||||||
|
retval=127
|
||||||
|
[ ! -S /var/run/dbus/system_bus_socket ] && runcnf=0
|
||||||
|
[ ! -x /usr/libexec/packagekitd ] && runcnf=0
|
||||||
|
if [ $runcnf -eq 1 ]
|
||||||
|
then
|
||||||
|
/usr/libexec/pk-command-not-found $@
|
||||||
|
retval=$?
|
||||||
|
fi
|
||||||
|
return $retval
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# OSX command-not-found support
|
||||||
|
# https://github.com/Homebrew/homebrew-command-not-found
|
||||||
|
if type brew &> /dev/null; then
|
||||||
|
if brew command command-not-found-init > /dev/null 2>&1; then
|
||||||
|
eval "$(brew command-not-found-init)";
|
||||||
|
fi
|
||||||
|
fi
|
23
config/zsh/zshrc.d/dcompose.zsh
Normal file
23
config/zsh/zshrc.d/dcompose.zsh
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# Authors:
|
||||||
|
# https://github.com/tristola
|
||||||
|
#
|
||||||
|
# Docker-compose related zsh aliases
|
||||||
|
|
||||||
|
# Aliases ###################################################################
|
||||||
|
|
||||||
|
# Use dco as alias for docker-compose, since dc on *nix is 'dc - an arbitrary precision calculator'
|
||||||
|
# https://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html
|
||||||
|
|
||||||
|
alias dco='docker-compose'
|
||||||
|
|
||||||
|
alias dcb='docker-compose build'
|
||||||
|
alias dce='docker-compose exec'
|
||||||
|
alias dcps='docker-compose ps'
|
||||||
|
alias dcrestart='docker-compose restart'
|
||||||
|
alias dcrm='docker-compose rm'
|
||||||
|
alias dcr='docker-compose run'
|
||||||
|
alias dcstop='docker-compose stop'
|
||||||
|
alias dcup='docker-compose up'
|
||||||
|
alias dcdn='docker-compose down'
|
||||||
|
alias dcl='docker-compose logs'
|
||||||
|
alias dclf='docker-compose logs -f'
|
72
config/zsh/zshrc.d/extract.zsh
Normal file
72
config/zsh/zshrc.d/extract.zsh
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
alias x=extract
|
||||||
|
|
||||||
|
extract() {
|
||||||
|
local remove_archive
|
||||||
|
local success
|
||||||
|
local extract_dir
|
||||||
|
|
||||||
|
if (( $# == 0 )); then
|
||||||
|
cat <<-'EOF' >&2
|
||||||
|
Usage: extract [-option] [file ...]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-r, --remove Remove archive.
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
remove_archive=1
|
||||||
|
if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
|
||||||
|
remove_archive=0
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
while (( $# > 0 )); do
|
||||||
|
if [[ ! -f "$1" ]]; then
|
||||||
|
echo "extract: '$1' is not a valid file" >&2
|
||||||
|
shift
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
success=0
|
||||||
|
extract_dir="${1:t:r}"
|
||||||
|
case "$1" in
|
||||||
|
(*.tar.gz|*.tgz) (( $+commands[pigz] )) && { pigz -dc "$1" | tar xv } || tar zxvf "$1" ;;
|
||||||
|
(*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
|
||||||
|
(*.tar.xz|*.txz)
|
||||||
|
tar --xz --help &> /dev/null \
|
||||||
|
&& tar --xz -xvf "$1" \
|
||||||
|
|| xzcat "$1" | tar xvf - ;;
|
||||||
|
(*.tar.zma|*.tlz)
|
||||||
|
tar --lzma --help &> /dev/null \
|
||||||
|
&& tar --lzma -xvf "$1" \
|
||||||
|
|| lzcat "$1" | tar xvf - ;;
|
||||||
|
(*.tar) tar xvf "$1" ;;
|
||||||
|
(*.gz) (( $+commands[pigz] )) && pigz -d "$1" || gunzip "$1" ;;
|
||||||
|
(*.bz2) bunzip2 "$1" ;;
|
||||||
|
(*.xz) unxz "$1" ;;
|
||||||
|
(*.lzma) unlzma "$1" ;;
|
||||||
|
(*.Z) uncompress "$1" ;;
|
||||||
|
(*.zip|*.war|*.jar|*.sublime-package|*.ipsw|*.xpi|*.apk) unzip "$1" -d $extract_dir ;;
|
||||||
|
(*.rar) unrar x -ad "$1" ;;
|
||||||
|
(*.7z) 7za x "$1" ;;
|
||||||
|
(*.deb)
|
||||||
|
mkdir -p "$extract_dir/control"
|
||||||
|
mkdir -p "$extract_dir/data"
|
||||||
|
cd "$extract_dir"; ar vx "../${1}" > /dev/null
|
||||||
|
cd control; tar xzvf ../control.tar.gz
|
||||||
|
cd ../data; extract ../data.tar.*
|
||||||
|
cd ..; rm *.tar.* debian-binary
|
||||||
|
cd ..
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
|
echo "extract: '$1' cannot be extracted" >&2
|
||||||
|
success=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
(( success = $success > 0 ? $success : $? ))
|
||||||
|
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
242
config/zsh/zshrc.d/git.zsh
Normal file
242
config/zsh/zshrc.d/git.zsh
Normal file
|
@ -0,0 +1,242 @@
|
||||||
|
# Query/use custom command for `git`.
|
||||||
|
zstyle -s ":vcs_info:git:*:-all-" "command" _omz_git_git_cmd
|
||||||
|
: ${_omz_git_git_cmd:=git}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Functions
|
||||||
|
#
|
||||||
|
|
||||||
|
# The name of the current branch
|
||||||
|
# Back-compatibility wrapper for when this function was defined here in
|
||||||
|
# the plugin, before being pulled in to core lib/git.zsh as git_current_branch()
|
||||||
|
# to fix the core -> git plugin dependency.
|
||||||
|
function current_branch() {
|
||||||
|
git_current_branch
|
||||||
|
}
|
||||||
|
# The list of remotes
|
||||||
|
function current_repository() {
|
||||||
|
if ! $_omz_git_git_cmd rev-parse --is-inside-work-tree &> /dev/null; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
echo $($_omz_git_git_cmd remote -v | cut -d':' -f 2)
|
||||||
|
}
|
||||||
|
# Pretty log messages
|
||||||
|
function _git_log_prettily(){
|
||||||
|
if ! [ -z $1 ]; then
|
||||||
|
git log --pretty=$1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# Warn if the current branch is a WIP
|
||||||
|
function work_in_progress() {
|
||||||
|
if $(git log -n 1 2>/dev/null | grep -q -c "\-\-wip\-\-"); then
|
||||||
|
echo "WIP!!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
# (sorted alphabetically)
|
||||||
|
#
|
||||||
|
|
||||||
|
alias g='git'
|
||||||
|
|
||||||
|
alias ga='git add'
|
||||||
|
alias gaa='git add --all'
|
||||||
|
alias gapa='git add --patch'
|
||||||
|
alias gau='git add --update'
|
||||||
|
|
||||||
|
alias gb='git branch'
|
||||||
|
alias gba='git branch -a'
|
||||||
|
alias gbd='git branch -d'
|
||||||
|
alias gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
|
||||||
|
alias gbl='git blame -b -w'
|
||||||
|
alias gbnm='git branch --no-merged'
|
||||||
|
alias gbr='git branch --remote'
|
||||||
|
alias gbs='git bisect'
|
||||||
|
alias gbsb='git bisect bad'
|
||||||
|
alias gbsg='git bisect good'
|
||||||
|
alias gbsr='git bisect reset'
|
||||||
|
alias gbss='git bisect start'
|
||||||
|
|
||||||
|
alias gc='git commit -v'
|
||||||
|
alias gc!='git commit -v --amend'
|
||||||
|
alias gcn!='git commit -v --no-edit --amend'
|
||||||
|
alias gca='git commit -v -a'
|
||||||
|
alias gca!='git commit -v -a --amend'
|
||||||
|
alias gcan!='git commit -v -a --no-edit --amend'
|
||||||
|
alias gcans!='git commit -v -a -s --no-edit --amend'
|
||||||
|
alias gcam='git commit -a -m'
|
||||||
|
alias gcsm='git commit -s -m'
|
||||||
|
alias gcb='git checkout -b'
|
||||||
|
alias gcf='git config --list'
|
||||||
|
alias gcl='git clone --recursive'
|
||||||
|
alias gclean='git clean -fd'
|
||||||
|
alias gpristine='git reset --hard && git clean -dfx'
|
||||||
|
alias gcm='git checkout master'
|
||||||
|
alias gcd='git checkout develop'
|
||||||
|
alias gcmsg='git commit -m'
|
||||||
|
alias gco='git checkout'
|
||||||
|
alias gcount='git shortlog -sn'
|
||||||
|
compdef _git gcount
|
||||||
|
alias gcp='git cherry-pick'
|
||||||
|
alias gcpa='git cherry-pick --abort'
|
||||||
|
alias gcpc='git cherry-pick --continue'
|
||||||
|
alias gcs='git commit -S'
|
||||||
|
|
||||||
|
alias gd='git diff'
|
||||||
|
alias gdca='git diff --cached'
|
||||||
|
alias gdct='git describe --tags `git rev-list --tags --max-count=1`'
|
||||||
|
alias gdt='git diff-tree --no-commit-id --name-only -r'
|
||||||
|
alias gdw='git diff --word-diff'
|
||||||
|
|
||||||
|
gdv() { git diff -w "$@" | view - }
|
||||||
|
compdef _git gdv=git-diff
|
||||||
|
|
||||||
|
alias gf='git fetch'
|
||||||
|
alias gfa='git fetch --all --prune'
|
||||||
|
alias gfo='git fetch origin'
|
||||||
|
|
||||||
|
function gfg() { git ls-files | grep $@ }
|
||||||
|
compdef _grep gfg
|
||||||
|
|
||||||
|
alias gg='git gui citool'
|
||||||
|
alias gga='git gui citool --amend'
|
||||||
|
|
||||||
|
ggf() {
|
||||||
|
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
||||||
|
git push --force origin "${b:=$1}"
|
||||||
|
}
|
||||||
|
compdef _git ggf=git-checkout
|
||||||
|
|
||||||
|
ggl() {
|
||||||
|
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||||
|
git pull origin "${*}"
|
||||||
|
else
|
||||||
|
[[ "$#" == 0 ]] && local b="$(git_current_branch)"
|
||||||
|
git pull origin "${b:=$1}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
compdef _git ggl=git-checkout
|
||||||
|
|
||||||
|
ggp() {
|
||||||
|
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||||
|
git push origin "${*}"
|
||||||
|
else
|
||||||
|
[[ "$#" == 0 ]] && local b="$(git_current_branch)"
|
||||||
|
git push origin "${b:=$1}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
compdef _git ggp=git-checkout
|
||||||
|
|
||||||
|
ggpnp() {
|
||||||
|
if [[ "$#" == 0 ]]; then
|
||||||
|
ggl && ggp
|
||||||
|
else
|
||||||
|
ggl "${*}" && ggp "${*}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
compdef _git ggpnp=git-checkout
|
||||||
|
|
||||||
|
ggu() {
|
||||||
|
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
||||||
|
git pull --rebase origin "${b:=$1}"
|
||||||
|
}
|
||||||
|
compdef _git ggu=git-checkout
|
||||||
|
|
||||||
|
alias ggpur='ggu'
|
||||||
|
compdef _git ggpur=git-checkout
|
||||||
|
|
||||||
|
alias ggpull='git pull origin $(git_current_branch)'
|
||||||
|
compdef _git ggpull=git-checkout
|
||||||
|
|
||||||
|
alias ggpush='git push origin $(git_current_branch)'
|
||||||
|
compdef _git ggpush=git-checkout
|
||||||
|
|
||||||
|
alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)'
|
||||||
|
alias gpsup='git push --set-upstream origin $(git_current_branch)'
|
||||||
|
|
||||||
|
alias ghh='git help'
|
||||||
|
|
||||||
|
alias gignore='git update-index --assume-unchanged'
|
||||||
|
alias gignored='git ls-files -v | grep "^[[:lower:]]"'
|
||||||
|
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
|
||||||
|
compdef _git git-svn-dcommit-push=git
|
||||||
|
|
||||||
|
alias gk='\gitk --all --branches'
|
||||||
|
compdef _git gk='gitk'
|
||||||
|
alias gke='\gitk --all $(git log -g --pretty=%h)'
|
||||||
|
compdef _git gke='gitk'
|
||||||
|
|
||||||
|
alias gl='git pull'
|
||||||
|
alias glg='git log --stat'
|
||||||
|
alias glgp='git log --stat -p'
|
||||||
|
alias glgg='git log --graph'
|
||||||
|
alias glgga='git log --graph --decorate --all'
|
||||||
|
alias glgm='git log --graph --max-count=10'
|
||||||
|
alias glo='git log --oneline --decorate'
|
||||||
|
alias glol="git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
|
||||||
|
alias glola="git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"
|
||||||
|
alias glog='git log --oneline --decorate --graph'
|
||||||
|
alias gloga='git log --oneline --decorate --graph --all'
|
||||||
|
alias glp="_git_log_prettily"
|
||||||
|
compdef _git glp=git-log
|
||||||
|
|
||||||
|
alias gm='git merge'
|
||||||
|
alias gmom='git merge origin/master'
|
||||||
|
alias gmt='git mergetool --no-prompt'
|
||||||
|
alias gmtvim='git mergetool --no-prompt --tool=vimdiff'
|
||||||
|
alias gmum='git merge upstream/master'
|
||||||
|
|
||||||
|
alias gp='git push'
|
||||||
|
alias gpd='git push --dry-run'
|
||||||
|
alias gpoat='git push origin --all && git push origin --tags'
|
||||||
|
compdef _git gpoat=git-push
|
||||||
|
alias gpu='git push upstream'
|
||||||
|
alias gpv='git push -v'
|
||||||
|
|
||||||
|
alias gr='git remote'
|
||||||
|
alias gra='git remote add'
|
||||||
|
alias grb='git rebase'
|
||||||
|
alias grba='git rebase --abort'
|
||||||
|
alias grbc='git rebase --continue'
|
||||||
|
alias grbi='git rebase -i'
|
||||||
|
alias grbm='git rebase master'
|
||||||
|
alias grbs='git rebase --skip'
|
||||||
|
alias grh='git reset HEAD'
|
||||||
|
alias grhh='git reset HEAD --hard'
|
||||||
|
alias grmv='git remote rename'
|
||||||
|
alias grrm='git remote remove'
|
||||||
|
alias grset='git remote set-url'
|
||||||
|
alias grt='cd $(git rev-parse --show-toplevel || echo ".")'
|
||||||
|
alias gru='git reset --'
|
||||||
|
alias grup='git remote update'
|
||||||
|
alias grv='git remote -v'
|
||||||
|
|
||||||
|
alias gsb='git status -sb'
|
||||||
|
alias gsd='git svn dcommit'
|
||||||
|
alias gsi='git submodule init'
|
||||||
|
alias gsps='git show --pretty=short --show-signature'
|
||||||
|
alias gsr='git svn rebase'
|
||||||
|
alias gss='git status -s'
|
||||||
|
alias gst='git status'
|
||||||
|
alias gsta='git stash save'
|
||||||
|
alias gstaa='git stash apply'
|
||||||
|
alias gstc='git stash clear'
|
||||||
|
alias gstd='git stash drop'
|
||||||
|
alias gstl='git stash list'
|
||||||
|
alias gstp='git stash pop'
|
||||||
|
alias gsts='git stash show --text'
|
||||||
|
alias gsu='git submodule update'
|
||||||
|
|
||||||
|
alias gts='git tag -s'
|
||||||
|
alias gtv='git tag | sort -V'
|
||||||
|
|
||||||
|
alias gunignore='git update-index --no-assume-unchanged'
|
||||||
|
alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1'
|
||||||
|
alias gup='git pull --rebase'
|
||||||
|
alias gupv='git pull --rebase -v'
|
||||||
|
alias glum='git pull upstream master'
|
||||||
|
|
||||||
|
alias gwch='git whatchanged -p --abbrev-commit --pretty=medium'
|
||||||
|
alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip-- [skip ci]"'
|
||||||
|
|
16
config/zsh/zshrc.d/systemd.zsh
Normal file
16
config/zsh/zshrc.d/systemd.zsh
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
user_commands=(
|
||||||
|
list-units is-active status show help list-unit-files
|
||||||
|
is-enabled list-jobs show-environment cat list-timers)
|
||||||
|
|
||||||
|
sudo_commands=(
|
||||||
|
start stop reload restart try-restart isolate kill
|
||||||
|
reset-failed enable disable reenable preset mask unmask
|
||||||
|
link load cancel set-environment unset-environment
|
||||||
|
edit daemon-reload)
|
||||||
|
|
||||||
|
for c in $user_commands; do; alias sc-$c="systemctl $c"; done
|
||||||
|
for c in $sudo_commands; do; alias sc-$c="sudo systemctl $c"; done
|
||||||
|
|
||||||
|
alias sc-enable-now="sc-enable --now"
|
||||||
|
alias sc-disable-now="sc-disable --now"
|
||||||
|
alias sc-mask-now="sc-mask --now"
|
99
config/zsh/zshrc.d/tmux.zsh
Normal file
99
config/zsh/zshrc.d/tmux.zsh
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
alias ta='tmux attach -t'
|
||||||
|
alias tad='tmux attach -d -t'
|
||||||
|
alias ts='tmux new-session -s'
|
||||||
|
alias tl='tmux list-sessions'
|
||||||
|
alias tksv='tmux kill-server'
|
||||||
|
alias tkss='tmux kill-session -t'
|
||||||
|
|
||||||
|
# Only run if tmux is actually installed
|
||||||
|
if which tmux &> /dev/null
|
||||||
|
then
|
||||||
|
# Configuration variables
|
||||||
|
#
|
||||||
|
# Automatically start tmux
|
||||||
|
[[ -n "$ZSH_TMUX_AUTOSTART" ]] || ZSH_TMUX_AUTOSTART=false
|
||||||
|
# Only autostart once. If set to false, tmux will attempt to
|
||||||
|
# autostart every time your zsh configs are reloaded.
|
||||||
|
[[ -n "$ZSH_TMUX_AUTOSTART_ONCE" ]] || ZSH_TMUX_AUTOSTART_ONCE=true
|
||||||
|
# Automatically connect to a previous session if it exists
|
||||||
|
[[ -n "$ZSH_TMUX_AUTOCONNECT" ]] || ZSH_TMUX_AUTOCONNECT=true
|
||||||
|
# Automatically close the terminal when tmux exits
|
||||||
|
[[ -n "$ZSH_TMUX_AUTOQUIT" ]] || ZSH_TMUX_AUTOQUIT=$ZSH_TMUX_AUTOSTART
|
||||||
|
# Set term to screen or screen-256color based on current terminal support
|
||||||
|
[[ -n "$ZSH_TMUX_FIXTERM" ]] || ZSH_TMUX_FIXTERM=true
|
||||||
|
# Set '-CC' option for iTerm2 tmux integration
|
||||||
|
[[ -n "$ZSH_TMUX_ITERM2" ]] || ZSH_TMUX_ITERM2=false
|
||||||
|
# The TERM to use for non-256 color terminals.
|
||||||
|
# Tmux states this should be screen, but you may need to change it on
|
||||||
|
# systems without the proper terminfo
|
||||||
|
[[ -n "$ZSH_TMUX_FIXTERM_WITHOUT_256COLOR" ]] || ZSH_TMUX_FIXTERM_WITHOUT_256COLOR="screen"
|
||||||
|
# The TERM to use for 256 color terminals.
|
||||||
|
# Tmux states this should be screen-256color, but you may need to change it on
|
||||||
|
# systems without the proper terminfo
|
||||||
|
[[ -n "$ZSH_TMUX_FIXTERM_WITH_256COLOR" ]] || ZSH_TMUX_FIXTERM_WITH_256COLOR="screen-256color"
|
||||||
|
|
||||||
|
|
||||||
|
# Get the absolute path to the current directory
|
||||||
|
local zsh_tmux_plugin_path="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
# Determine if the terminal supports 256 colors
|
||||||
|
if [[ `tput colors` == "256" ]]
|
||||||
|
then
|
||||||
|
export ZSH_TMUX_TERM=$ZSH_TMUX_FIXTERM_WITH_256COLOR
|
||||||
|
else
|
||||||
|
export ZSH_TMUX_TERM=$ZSH_TMUX_FIXTERM_WITHOUT_256COLOR
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the correct local config file to use.
|
||||||
|
if [[ "$ZSH_TMUX_ITERM2" == "false" ]] && [[ -f $HOME/.tmux.conf || -h $HOME/.tmux.conf ]]
|
||||||
|
then
|
||||||
|
#use this when they have a ~/.tmux.conf
|
||||||
|
export _ZSH_TMUX_FIXED_CONFIG="$zsh_tmux_plugin_path/tmux.extra.conf"
|
||||||
|
else
|
||||||
|
#use this when they don't have a ~/.tmux.conf
|
||||||
|
export _ZSH_TMUX_FIXED_CONFIG="$zsh_tmux_plugin_path/tmux.only.conf"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Wrapper function for tmux.
|
||||||
|
function _zsh_tmux_plugin_run()
|
||||||
|
{
|
||||||
|
# We have other arguments, just run them
|
||||||
|
if [[ -n "$@" ]]
|
||||||
|
then
|
||||||
|
\tmux $@
|
||||||
|
# Try to connect to an existing session.
|
||||||
|
elif [[ "$ZSH_TMUX_AUTOCONNECT" == "true" ]]
|
||||||
|
then
|
||||||
|
\tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` attach || \tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG` new-session
|
||||||
|
[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit
|
||||||
|
# Just run tmux, fixing the TERM variable if requested.
|
||||||
|
else
|
||||||
|
\tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG`
|
||||||
|
[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Use the completions for tmux for our function
|
||||||
|
compdef _tmux _zsh_tmux_plugin_run
|
||||||
|
|
||||||
|
# Alias tmux to our wrapper function.
|
||||||
|
alias tmux=_zsh_tmux_plugin_run
|
||||||
|
|
||||||
|
# Autostart if not already in tmux and enabled.
|
||||||
|
if [[ ! -n "$TMUX" && "$ZSH_TMUX_AUTOSTART" == "true" ]]
|
||||||
|
then
|
||||||
|
# Actually don't autostart if we already did and multiple autostarts are disabled.
|
||||||
|
if [[ "$ZSH_TMUX_AUTOSTART_ONCE" == "false" || "$ZSH_TMUX_AUTOSTARTED" != "true" ]]
|
||||||
|
then
|
||||||
|
export ZSH_TMUX_AUTOSTARTED=true
|
||||||
|
_zsh_tmux_plugin_run
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print "zsh tmux plugin: tmux not found. Please install tmux before using this plugin."
|
||||||
|
fi
|
||||||
|
|
2755
lib/local/_docker
Normal file
2755
lib/local/_docker
Normal file
File diff suppressed because it is too large
Load diff
456
lib/local/_docker-compose
Normal file
456
lib/local/_docker-compose
Normal file
|
@ -0,0 +1,456 @@
|
||||||
|
#compdef docker-compose
|
||||||
|
|
||||||
|
# Description
|
||||||
|
# -----------
|
||||||
|
# zsh completion for docker-compose
|
||||||
|
# https://github.com/sdurrheimer/docker-compose-zsh-completion
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# Version
|
||||||
|
# -------
|
||||||
|
# 1.5.0
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# Authors
|
||||||
|
# -------
|
||||||
|
# * Steve Durrheimer <s.durrheimer@gmail.com>
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# Inspiration
|
||||||
|
# -----------
|
||||||
|
# * @albers docker-compose bash completion script
|
||||||
|
# * @felixr docker zsh completion script : https://github.com/felixr/docker-zsh-completion
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
__docker-compose_q() {
|
||||||
|
docker-compose 2>/dev/null $compose_options "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# All services defined in docker-compose.yml
|
||||||
|
__docker-compose_all_services_in_compose_file() {
|
||||||
|
local already_selected
|
||||||
|
local -a services
|
||||||
|
already_selected=$(echo $words | tr " " "|")
|
||||||
|
__docker-compose_q config --services \
|
||||||
|
| grep -Ev "^(${already_selected})$"
|
||||||
|
}
|
||||||
|
|
||||||
|
# All services, even those without an existing container
|
||||||
|
__docker-compose_services_all() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
integer ret=1
|
||||||
|
services=$(__docker-compose_all_services_in_compose_file)
|
||||||
|
_alternative "args:services:($services)" && ret=0
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
# All services that have an entry with the given key in their docker-compose.yml section
|
||||||
|
__docker-compose_services_with_key() {
|
||||||
|
local already_selected
|
||||||
|
local -a buildable
|
||||||
|
already_selected=$(echo $words | tr " " "|")
|
||||||
|
# flatten sections to one line, then filter lines containing the key and return section name.
|
||||||
|
__docker-compose_q config \
|
||||||
|
| sed -n -e '/^services:/,/^[^ ]/p' \
|
||||||
|
| sed -n 's/^ //p' \
|
||||||
|
| awk '/^[a-zA-Z0-9]/{printf "\n"};{printf $0;next;}' \
|
||||||
|
| grep " \+$1:" \
|
||||||
|
| cut -d: -f1 \
|
||||||
|
| grep -Ev "^(${already_selected})$"
|
||||||
|
}
|
||||||
|
|
||||||
|
# All services that are defined by a Dockerfile reference
|
||||||
|
__docker-compose_services_from_build() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
integer ret=1
|
||||||
|
buildable=$(__docker-compose_services_with_key build)
|
||||||
|
_alternative "args:buildable services:($buildable)" && ret=0
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
# All services that are defined by an image
|
||||||
|
__docker-compose_services_from_image() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
integer ret=1
|
||||||
|
pullable=$(__docker-compose_services_with_key image)
|
||||||
|
_alternative "args:pullable services:($pullable)" && ret=0
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker-compose_get_services() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
integer ret=1
|
||||||
|
local kind
|
||||||
|
declare -a running paused stopped lines args services
|
||||||
|
|
||||||
|
docker_status=$(docker ps > /dev/null 2>&1)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
_message "Error! Docker is not running."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
kind=$1
|
||||||
|
shift
|
||||||
|
[[ $kind =~ (stopped|all) ]] && args=($args -a)
|
||||||
|
|
||||||
|
lines=(${(f)"$(_call_program commands docker $docker_options ps $args)"})
|
||||||
|
services=(${(f)"$(_call_program commands docker-compose 2>/dev/null $compose_options ps -q)"})
|
||||||
|
|
||||||
|
# Parse header line to find columns
|
||||||
|
local i=1 j=1 k header=${lines[1]}
|
||||||
|
declare -A begin end
|
||||||
|
while (( j < ${#header} - 1 )); do
|
||||||
|
i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 ))
|
||||||
|
j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 ))
|
||||||
|
k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 ))
|
||||||
|
begin[${header[$i,$((j-1))]}]=$i
|
||||||
|
end[${header[$i,$((j-1))]}]=$k
|
||||||
|
done
|
||||||
|
lines=(${lines[2,-1]})
|
||||||
|
|
||||||
|
# Container ID
|
||||||
|
local line s name
|
||||||
|
local -a names
|
||||||
|
for line in $lines; do
|
||||||
|
if [[ ${services[@]} == *"${line[${begin[CONTAINER ID]},${end[CONTAINER ID]}]%% ##}"* ]]; then
|
||||||
|
names=(${(ps:,:)${${line[${begin[NAMES]},-1]}%% *}})
|
||||||
|
for name in $names; do
|
||||||
|
s="${${name%_*}#*_}:${(l:15:: :::)${${line[${begin[CREATED]},${end[CREATED]}]/ ago/}%% ##}}"
|
||||||
|
s="$s, ${line[${begin[CONTAINER ID]},${end[CONTAINER ID]}]%% ##}"
|
||||||
|
s="$s, ${${${line[${begin[IMAGE]},${end[IMAGE]}]}/:/\\:}%% ##}"
|
||||||
|
if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = Exit* ]]; then
|
||||||
|
stopped=($stopped $s)
|
||||||
|
else
|
||||||
|
if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = *\(Paused\)* ]]; then
|
||||||
|
paused=($paused $s)
|
||||||
|
fi
|
||||||
|
running=($running $s)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
[[ $kind =~ (running|all) ]] && _describe -t services-running "running services" running "$@" && ret=0
|
||||||
|
[[ $kind =~ (paused|all) ]] && _describe -t services-paused "paused services" paused "$@" && ret=0
|
||||||
|
[[ $kind =~ (stopped|all) ]] && _describe -t services-stopped "stopped services" stopped "$@" && ret=0
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker-compose_pausedservices() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
__docker-compose_get_services paused "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker-compose_stoppedservices() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
__docker-compose_get_services stopped "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker-compose_runningservices() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
__docker-compose_get_services running "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker-compose_services() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
__docker-compose_get_services all "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker-compose_caching_policy() {
|
||||||
|
oldp=( "$1"(Nmh+1) ) # 1 hour
|
||||||
|
(( $#oldp ))
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker-compose_commands() {
|
||||||
|
local cache_policy
|
||||||
|
|
||||||
|
zstyle -s ":completion:${curcontext}:" cache-policy cache_policy
|
||||||
|
if [[ -z "$cache_policy" ]]; then
|
||||||
|
zstyle ":completion:${curcontext}:" cache-policy __docker-compose_caching_policy
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ( [[ ${+_docker_compose_subcommands} -eq 0 ]] || _cache_invalid docker_compose_subcommands) \
|
||||||
|
&& ! _retrieve_cache docker_compose_subcommands;
|
||||||
|
then
|
||||||
|
local -a lines
|
||||||
|
lines=(${(f)"$(_call_program commands docker-compose 2>&1)"})
|
||||||
|
_docker_compose_subcommands=(${${${lines[$((${lines[(i)Commands:]} + 1)),${lines[(I) *]}]}## #}/ ##/:})
|
||||||
|
(( $#_docker_compose_subcommands > 0 )) && _store_cache docker_compose_subcommands _docker_compose_subcommands
|
||||||
|
fi
|
||||||
|
_describe -t docker-compose-commands "docker-compose command" _docker_compose_subcommands
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker-compose_subcommand() {
|
||||||
|
local opts_help opts_force_recreate opts_no_recreate opts_no_build opts_remove_orphans opts_timeout opts_no_color opts_no_deps
|
||||||
|
|
||||||
|
opts_help='(: -)--help[Print usage]'
|
||||||
|
opts_force_recreate="(--no-recreate)--force-recreate[Recreate containers even if their configuration and image haven't changed. Incompatible with --no-recreate.]"
|
||||||
|
opts_no_recreate="(--force-recreate)--no-recreate[If containers already exist, don't recreate them. Incompatible with --force-recreate.]"
|
||||||
|
opts_no_build="(--build)--no-build[Don't build an image, even if it's missing.]"
|
||||||
|
opts_remove_orphans="--remove-orphans[Remove containers for services not defined in the Compose file]"
|
||||||
|
opts_timeout=('(-t --timeout)'{-t,--timeout}"[Specify a shutdown timeout in seconds. (default: 10)]:seconds: ")
|
||||||
|
opts_no_color='--no-color[Produce monochrome output.]'
|
||||||
|
opts_no_deps="--no-deps[Don't start linked services.]"
|
||||||
|
|
||||||
|
integer ret=1
|
||||||
|
|
||||||
|
case "$words[1]" in
|
||||||
|
(build)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'--force-rm[Always remove intermediate containers.]' \
|
||||||
|
'--no-cache[Do not use cache when building the image.]' \
|
||||||
|
'--pull[Always attempt to pull a newer version of the image.]' \
|
||||||
|
'*:services:__docker-compose_services_from_build' && ret=0
|
||||||
|
;;
|
||||||
|
(bundle)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'(--output -o)'{--output,-o}'[Path to write the bundle file to. Defaults to "<project name>.dab".]:file:_files' && ret=0
|
||||||
|
;;
|
||||||
|
(config)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'(--quiet -q)'{--quiet,-q}"[Only validate the configuration, don't print anything.]" \
|
||||||
|
'--services[Print the service names, one per line.]' && ret=0
|
||||||
|
;;
|
||||||
|
(create)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
$opts_force_recreate \
|
||||||
|
$opts_no_recreate \
|
||||||
|
$opts_no_build \
|
||||||
|
"(--no-build)--build[Build images before creating containers.]" \
|
||||||
|
'*:services:__docker-compose_services_all' && ret=0
|
||||||
|
;;
|
||||||
|
(down)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
"--rmi[Remove images. Type must be one of: 'all': Remove all images used by any service. 'local': Remove only images that don't have a custom tag set by the \`image\` field.]:type:(all local)" \
|
||||||
|
'(-v --volumes)'{-v,--volumes}"[Remove named volumes declared in the \`volumes\` section of the Compose file and anonymous volumes attached to containers.]" \
|
||||||
|
$opts_remove_orphans && ret=0
|
||||||
|
;;
|
||||||
|
(events)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'--json[Output events as a stream of json objects]' \
|
||||||
|
'*:services:__docker-compose_services_all' && ret=0
|
||||||
|
;;
|
||||||
|
(exec)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'-d[Detached mode: Run command in the background.]' \
|
||||||
|
'--privileged[Give extended privileges to the process.]' \
|
||||||
|
'--user=[Run the command as this user.]:username:_users' \
|
||||||
|
'-T[Disable pseudo-tty allocation. By default `docker-compose exec` allocates a TTY.]' \
|
||||||
|
'--index=[Index of the container if there are multiple instances of a service \[default: 1\]]:index: ' \
|
||||||
|
'(-):running services:__docker-compose_runningservices' \
|
||||||
|
'(-):command: _command_names -e' \
|
||||||
|
'*::arguments: _normal' && ret=0
|
||||||
|
;;
|
||||||
|
(help)
|
||||||
|
_arguments ':subcommand:__docker-compose_commands' && ret=0
|
||||||
|
;;
|
||||||
|
(kill)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'-s[SIGNAL to send to the container. Default signal is SIGKILL.]:signal:_signals' \
|
||||||
|
'*:running services:__docker-compose_runningservices' && ret=0
|
||||||
|
;;
|
||||||
|
(logs)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'(-f --follow)'{-f,--follow}'[Follow log output]' \
|
||||||
|
$opts_no_color \
|
||||||
|
'--tail=[Number of lines to show from the end of the logs for each container.]:number of lines: ' \
|
||||||
|
'(-t --timestamps)'{-t,--timestamps}'[Show timestamps]' \
|
||||||
|
'*:services:__docker-compose_services_all' && ret=0
|
||||||
|
;;
|
||||||
|
(pause)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'*:running services:__docker-compose_runningservices' && ret=0
|
||||||
|
;;
|
||||||
|
(port)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'--protocol=[tcp or udp \[default: tcp\]]:protocol:(tcp udp)' \
|
||||||
|
'--index=[index of the container if there are multiple instances of a service \[default: 1\]]:index: ' \
|
||||||
|
'1:running services:__docker-compose_runningservices' \
|
||||||
|
'2:port:_ports' && ret=0
|
||||||
|
;;
|
||||||
|
(ps)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'-q[Only display IDs]' \
|
||||||
|
'*:services:__docker-compose_services_all' && ret=0
|
||||||
|
;;
|
||||||
|
(pull)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'--ignore-pull-failures[Pull what it can and ignores images with pull failures.]' \
|
||||||
|
'*:services:__docker-compose_services_from_image' && ret=0
|
||||||
|
;;
|
||||||
|
(push)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'--ignore-push-failures[Push what it can and ignores images with push failures.]' \
|
||||||
|
'*:services:__docker-compose_services' && ret=0
|
||||||
|
;;
|
||||||
|
(rm)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'(-f --force)'{-f,--force}"[Don't ask to confirm removal]" \
|
||||||
|
'-v[Remove any anonymous volumes attached to containers]' \
|
||||||
|
'*:stopped services:__docker-compose_stoppedservices' && ret=0
|
||||||
|
;;
|
||||||
|
(run)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'-d[Detached mode: Run container in the background, print new container name.]' \
|
||||||
|
'*-e[KEY=VAL Set an environment variable (can be used multiple times)]:environment variable KEY=VAL: ' \
|
||||||
|
'--entrypoint[Overwrite the entrypoint of the image.]:entry point: ' \
|
||||||
|
'--name=[Assign a name to the container]:name: ' \
|
||||||
|
$opts_no_deps \
|
||||||
|
'(-p --publish)'{-p,--publish=}"[Publish a container's port(s) to the host]" \
|
||||||
|
'--rm[Remove container after run. Ignored in detached mode.]' \
|
||||||
|
"--service-ports[Run command with the service's ports enabled and mapped to the host.]" \
|
||||||
|
'-T[Disable pseudo-tty allocation. By default `docker-compose run` allocates a TTY.]' \
|
||||||
|
'(-u --user)'{-u,--user=}'[Run as specified username or uid]:username or uid:_users' \
|
||||||
|
'(-w --workdir)'{-w,--workdir=}'[Working directory inside the container]:workdir: ' \
|
||||||
|
'(-):services:__docker-compose_services' \
|
||||||
|
'(-):command: _command_names -e' \
|
||||||
|
'*::arguments: _normal' && ret=0
|
||||||
|
;;
|
||||||
|
(scale)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
$opts_timeout \
|
||||||
|
'*:running services:__docker-compose_runningservices' && ret=0
|
||||||
|
;;
|
||||||
|
(start)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'*:stopped services:__docker-compose_stoppedservices' && ret=0
|
||||||
|
;;
|
||||||
|
(stop|restart)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
$opts_timeout \
|
||||||
|
'*:running services:__docker-compose_runningservices' && ret=0
|
||||||
|
;;
|
||||||
|
(unpause)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'*:paused services:__docker-compose_pausedservices' && ret=0
|
||||||
|
;;
|
||||||
|
(up)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
'(--abort-on-container-exit)-d[Detached mode: Run containers in the background, print new container names. Incompatible with --abort-on-container-exit.]' \
|
||||||
|
$opts_no_color \
|
||||||
|
$opts_no_deps \
|
||||||
|
$opts_force_recreate \
|
||||||
|
$opts_no_recreate \
|
||||||
|
$opts_no_build \
|
||||||
|
"(--no-build)--build[Build images before starting containers.]" \
|
||||||
|
"(-d)--abort-on-container-exit[Stops all containers if any container was stopped. Incompatible with -d.]" \
|
||||||
|
'(-t --timeout)'{-t,--timeout}"[Use this timeout in seconds for container shutdown when attached or when containers are already running. (default: 10)]:seconds: " \
|
||||||
|
$opts_remove_orphans \
|
||||||
|
'*:services:__docker-compose_services_all' && ret=0
|
||||||
|
;;
|
||||||
|
(version)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
"--short[Shows only Compose's version number.]" && ret=0
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
|
_message 'Unknown sub command' && ret=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker-compose() {
|
||||||
|
# Support for subservices, which allows for `compdef _docker docker-shell=_docker_containers`.
|
||||||
|
# Based on /usr/share/zsh/functions/Completion/Unix/_git without support for `ret`.
|
||||||
|
if [[ $service != docker-compose ]]; then
|
||||||
|
_call_function - _$service
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
integer ret=1
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
'(- :)'{-h,--help}'[Get help]' \
|
||||||
|
'(-f --file)'{-f,--file}'[Specify an alternate docker-compose file (default: docker-compose.yml)]:file:_files -g "*.yml"' \
|
||||||
|
'(-p --project-name)'{-p,--project-name}'[Specify an alternate project name (default: directory name)]:project name:' \
|
||||||
|
'--verbose[Show more output]' \
|
||||||
|
'(- :)'{-v,--version}'[Print version and exit]' \
|
||||||
|
'(-H --host)'{-H,--host}'[Daemon socket to connect to]:host:' \
|
||||||
|
'--tls[Use TLS; implied by --tlsverify]' \
|
||||||
|
'--tlscacert=[Trust certs signed only by this CA]:ca path:' \
|
||||||
|
'--tlscert=[Path to TLS certificate file]:client cert path:' \
|
||||||
|
'--tlskey=[Path to TLS key file]:tls key path:' \
|
||||||
|
'--tlsverify[Use TLS and verify the remote]' \
|
||||||
|
"--skip-hostname-check[Don't check the daemon's hostname against the name specified in the client certificate (for example if your docker host is an IP address)]" \
|
||||||
|
'(-): :->command' \
|
||||||
|
'(-)*:: :->option-or-argument' && ret=0
|
||||||
|
|
||||||
|
local -a relevant_compose_flags relevant_docker_flags compose_options docker_options
|
||||||
|
|
||||||
|
relevant_compose_flags=(
|
||||||
|
"--file" "-f"
|
||||||
|
"--host" "-H"
|
||||||
|
"--project-name" "-p"
|
||||||
|
"--tls"
|
||||||
|
"--tlscacert"
|
||||||
|
"--tlscert"
|
||||||
|
"--tlskey"
|
||||||
|
"--tlsverify"
|
||||||
|
"--skip-hostname-check"
|
||||||
|
)
|
||||||
|
|
||||||
|
relevant_docker_flags=(
|
||||||
|
"--host" "-H"
|
||||||
|
"--tls"
|
||||||
|
"--tlscacert"
|
||||||
|
"--tlscert"
|
||||||
|
"--tlskey"
|
||||||
|
"--tlsverify"
|
||||||
|
)
|
||||||
|
|
||||||
|
for k in "${(@k)opt_args}"; do
|
||||||
|
if [[ -n "${relevant_docker_flags[(r)$k]}" ]]; then
|
||||||
|
docker_options+=$k
|
||||||
|
if [[ -n "$opt_args[$k]" ]]; then
|
||||||
|
docker_options+=$opt_args[$k]
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [[ -n "${relevant_compose_flags[(r)$k]}" ]]; then
|
||||||
|
compose_options+=$k
|
||||||
|
if [[ -n "$opt_args[$k]" ]]; then
|
||||||
|
compose_options+=$opt_args[$k]
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
__docker-compose_commands && ret=0
|
||||||
|
;;
|
||||||
|
(option-or-argument)
|
||||||
|
curcontext=${curcontext%:*:*}:docker-compose-$words[1]:
|
||||||
|
__docker-compose_subcommand && ret=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker-compose "$@"
|
||||||
|
|
8
lib/local/_extract
Normal file
8
lib/local/_extract
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#compdef extract
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
_arguments \
|
||||||
|
'(-r --remove)'{-r,--remove}'[Remove archive.]' \
|
||||||
|
"*::archive file:_files -g '(#i)*.(7z|Z|apk|bz2|deb|gz|ipsw|jar|lzma|rar|sublime-package|tar|tar.bz2|tar.gz|tar.xz|tar.zma|tbz|tbz2|tgz|tlz|txz|war|xpi|xz|zip)(-.)'" \
|
||||||
|
&& return 0
|
||||||
|
|
34
lib/local/_revolver
Normal file
34
lib/local/_revolver
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#compdef revolver
|
||||||
|
|
||||||
|
_commands=(
|
||||||
|
'start:start the spinner process'
|
||||||
|
'update:update the message'
|
||||||
|
'stop:stop the spinner process'
|
||||||
|
'demo:display a demo of each style'
|
||||||
|
)
|
||||||
|
|
||||||
|
###
|
||||||
|
# Complete revolver commands
|
||||||
|
###
|
||||||
|
function _revolver_commands() {
|
||||||
|
_describe -t commands 'commands' _commands "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# Revolver completion
|
||||||
|
###
|
||||||
|
function _revolver() {
|
||||||
|
typeset -A opt_args
|
||||||
|
local context state line curcontext="$curcontext"
|
||||||
|
|
||||||
|
# Set option arguments
|
||||||
|
_arguments -A \
|
||||||
|
'(-h --help)'{-h,--help}'[show help text and exit]' \
|
||||||
|
'(-v --version)'{-v,--version}'[show version information and exit]'
|
||||||
|
|
||||||
|
# Set log level arguments
|
||||||
|
_arguments \
|
||||||
|
'1: :_revolver_commands'
|
||||||
|
}
|
||||||
|
|
||||||
|
_revolver "$@"
|
131
lib/local/_vagrant
Normal file
131
lib/local/_vagrant
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
#compdef vagrant
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
# vagrant zsh completion
|
||||||
|
|
||||||
|
local -a _1st_arguments
|
||||||
|
_1st_arguments=(
|
||||||
|
'box:Box commands'
|
||||||
|
'connect:Connects to a remotely shared Vagrant environment'
|
||||||
|
'destroy:Destroys the vagrant environment'
|
||||||
|
'docker-logs:Outputs the logs from the Docker container'
|
||||||
|
'docker-run:Run a one-off command in the context of a container'
|
||||||
|
'global-status:Reports the status of all active Vagrant environments on the system'
|
||||||
|
'halt:Halts the currently running vagrant environment'
|
||||||
|
'help:Shows the help for a subcommand'
|
||||||
|
'init:[box_name] [box_url] Initializes current folder for Vagrant usage'
|
||||||
|
'list-commands:Outputs all available Vagrant subcommands, even non-primary ones'
|
||||||
|
'login:Authenticates against a Vagrant Cloud server to access protected boxes'
|
||||||
|
'package:Packages a vagrant environment for distribution'
|
||||||
|
'plugin:Plugin commands'
|
||||||
|
'provision:Run the provisioner'
|
||||||
|
'push:Deploys code in this environment to a configured destination'
|
||||||
|
'rdp:Connects to machine via RDP'
|
||||||
|
'reload:Reload the vagrant environment'
|
||||||
|
'resume:Resumes a suspend vagrant environment'
|
||||||
|
'rsync:Syncs rsync synced folders to remote machine'
|
||||||
|
'rsync-auto:Syncs rsync synced folders automatically when files change'
|
||||||
|
'share:Shares your Vagrant environment with anyone in the world'
|
||||||
|
'snapshot:Manage snapshots with the guest machine'
|
||||||
|
'ssh:SSH into the currently running environment'
|
||||||
|
'ssh-config:Outputs .ssh/config valid syntax for connecting to this environment via ssh'
|
||||||
|
'status:Shows the status of the current Vagrant environment'
|
||||||
|
'suspend:Suspends the currently running vagrant environment'
|
||||||
|
'snapshot:Used to manage snapshots with the guest machine'
|
||||||
|
'up:Creates the vagrant environment'
|
||||||
|
'version:Prints current and latest Vagrant version'
|
||||||
|
'--help:[TASK] Describe available tasks or one specific task'
|
||||||
|
'--version:Prints the Vagrant version information'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _box_arguments
|
||||||
|
_box_arguments=(
|
||||||
|
'add:ADDRESS Adds a box to the system'
|
||||||
|
'help:COMMAND List subcommands'
|
||||||
|
'list:Lists all installed boxes'
|
||||||
|
'outdated:Checks if a box has newer version'
|
||||||
|
'remove:NAME Removes a box from the system'
|
||||||
|
'repackage:NAME PROVIDER VERSION Repackages an installed box into a `.box` file'
|
||||||
|
'update:Updates box to a newer version, if available'
|
||||||
|
)
|
||||||
|
|
||||||
|
__task_list ()
|
||||||
|
{
|
||||||
|
local expl
|
||||||
|
declare -a tasks
|
||||||
|
|
||||||
|
tasks=(box destroy halt init package provision reload resume ssh ssh_config status suspend up version)
|
||||||
|
|
||||||
|
_wanted tasks expl 'help' compadd $tasks
|
||||||
|
}
|
||||||
|
|
||||||
|
__box_list ()
|
||||||
|
{
|
||||||
|
_wanted application expl 'command' compadd $(command vagrant box list | sed -e 's/ /\\ /g')
|
||||||
|
}
|
||||||
|
|
||||||
|
__vm_list ()
|
||||||
|
{
|
||||||
|
_wanted application expl 'command' compadd $(command grep Vagrantfile -oe '^[^#]*\.vm\.define *[:"]\([a-zA-Z0-9_-]\+\)' 2>/dev/null | awk '{print substr($2, 2)}')
|
||||||
|
_wanted application expl 'command' compadd $(command ls .vagrant/machines/ 2>/dev/null)
|
||||||
|
}
|
||||||
|
|
||||||
|
__vagrant-box ()
|
||||||
|
{
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_describe -t commands "gem subcommand" _box_arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
(options)
|
||||||
|
case $line[1] in
|
||||||
|
(repackage|remove)
|
||||||
|
_arguments ':feature:__box_list'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
local expl
|
||||||
|
local -a boxes installed_boxes
|
||||||
|
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_describe -t commands "gem subcommand" _1st_arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
(options)
|
||||||
|
case $line[1] in
|
||||||
|
(help)
|
||||||
|
_arguments ':feature:__task_list'
|
||||||
|
;;
|
||||||
|
|
||||||
|
(box)
|
||||||
|
__vagrant-box
|
||||||
|
;;
|
||||||
|
(up|provision|package|destroy|reload|ssh|ssh-config|halt|resume|status)
|
||||||
|
_arguments ':feature:__vm_list'
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
Loading…
Add table
Reference in a new issue