mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-05-22 04:51:12 +02:00
Merge branch 'master' of github.com:robbyrussell/oh-my-zsh
This commit is contained in:
commit
d709141023
279 changed files with 13694 additions and 2907 deletions
|
|
@ -13,9 +13,13 @@ _1st_arguments=(
|
|||
'disconnect:disconnect from a TCP/IP device. Port 5555 is default.'
|
||||
'emu:run emulator console command'
|
||||
'forward:forward socket connections'
|
||||
'get-devpath:print the device path'
|
||||
'get-serialno:print the serial number of the device'
|
||||
'get-state:print the current state of the device: offline | bootloader | device'
|
||||
'help:show the help message'
|
||||
'install:push this package file to the device and install it'
|
||||
'jdwp:list PIDs of processes hosting a JDWP transport'
|
||||
'keygen:generate adb public/private key'
|
||||
'kill-server:kill the server if it is running'
|
||||
'logcat:view device log'
|
||||
'pull:copy file/dir from device'
|
||||
|
|
@ -30,6 +34,7 @@ _1st_arguments=(
|
|||
'start-server:ensure that there is a server running'
|
||||
'tcpip:restart host adb in tcpip mode'
|
||||
'uninstall:remove this app package from the device'
|
||||
'usb:restart the adbd daemon listing on USB'
|
||||
'version:show version num'
|
||||
'wait-for-device:block until device is online'
|
||||
)
|
||||
|
|
|
|||
5
plugins/arcanist/README.md
Normal file
5
plugins/arcanist/README.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
## arcanist
|
||||
|
||||
**Maintainer:** [@emzar](https://github.com/emzar)
|
||||
|
||||
This plugin adds many useful aliases.
|
||||
21
plugins/arcanist/arcanist.plugin.zsh
Normal file
21
plugins/arcanist/arcanist.plugin.zsh
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#
|
||||
# Aliases
|
||||
# (sorted alphabetically)
|
||||
#
|
||||
|
||||
alias ara='arc amend'
|
||||
alias arb='arc branch'
|
||||
alias arco='arc cover'
|
||||
alias arci='arc commit'
|
||||
|
||||
alias ard='arc diff'
|
||||
alias ardnu='arc diff --nounit'
|
||||
alias ardnupc='arc diff --nounit --plan-changes'
|
||||
alias ardpc='arc diff --plan-changes'
|
||||
|
||||
alias are='arc export'
|
||||
alias arh='arc help'
|
||||
alias arl='arc land'
|
||||
alias arli='arc lint'
|
||||
alias arls='arc list'
|
||||
alias arpa='arc patch'
|
||||
|
|
@ -1,64 +1,97 @@
|
|||
## ARCHLINUX PLUGIN
|
||||
# Archlinux plugin
|
||||
|
||||
## Features
|
||||
|
||||
#### YAOURT
|
||||
|
||||
| Alias | Command | Description |
|
||||
|---------|------------------------------------|---------------------------------------------------------------------|
|
||||
| yaconf | yaourt -C | Fix all configuration files with vimdiff |
|
||||
| yain | yaourt -S | Install packages from the repositories |
|
||||
| yains | yaourt -U | Install a package from a local file |
|
||||
| yainsd | yaourt -S --asdeps | Install packages as dependencies of another package |
|
||||
| yaloc | yaourt -Qi | Display information about a package in the local database |
|
||||
| yalocs | yaourt -Qs | Search for packages in the local database |
|
||||
| yalst | yaourt -Qe | List installed packages including from AUR (tagged as "local") |
|
||||
| yamir | yaourt -Syy | Force refresh of all package lists after updating mirrorlist |
|
||||
| yaorph | yaourt -Qtd | Remove orphans using yaourt |
|
||||
| yare | yaourt -R | Remove packages, keeping its settings and dependencies |
|
||||
| yarem | yaourt -Rns | Remove packages, including its settings and unneeded dependencies |
|
||||
| yarep | yaourt -Si | Display information about a package in the repositories |
|
||||
| yareps | yaourt -Ss | Search for packages in the repositories |
|
||||
| yaupd | yaourt -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases |
|
||||
| yaupd | yaourt -Sy && sudo abs | Update and refresh the local package and ABS databases |
|
||||
| yaupd | yaourt -Sy && sudo aur | Update and refresh the local package and AUR databases |
|
||||
| yaupd | yaourt -Sy | Update and refresh the local package database |
|
||||
| yaupg | yaourt -Syua | Sync with repositories before upgrading all packages (from AUR too) |
|
||||
| yasu | yaourt -Syua --no-confirm | Same as `yaupg`, but without confirmation |
|
||||
| upgrade | yaourt -Syu | Sync with repositories before upgrading packages |
|
||||
|
||||
### PACAUR
|
||||
|
||||
| Alias | Command | Description |
|
||||
|---------|------------------------------------|---------------------------------------------------------------------|
|
||||
| pain | pacaur -S | Install packages from the repositories |
|
||||
| pains | pacaur -U | Install a package from a local file |
|
||||
| painsd | pacaur -S --asdeps | Install packages as dependencies of another package |
|
||||
| paloc | pacaur -Qi | Display information about a package in the local database |
|
||||
| palocs | pacaur -Qs | Search for packages in the local database |
|
||||
| palst | pacaur -Qe | List installed packages including from AUR (tagged as "local") |
|
||||
| pamir | pacaur -Syy | Force refresh of all package lists after updating mirrorlist |
|
||||
| paorph | pacaur -Qtd | Remove orphans using pacaur |
|
||||
| pare | pacaur -R | Remove packages, keeping its settings and dependencies |
|
||||
| parem | pacaur -Rns | Remove packages, including its settings and unneeded dependencies |
|
||||
| parep | pacaur -Si | Display information about a package in the repositories |
|
||||
| pareps | pacaur -Ss | Search for packages in the repositories |
|
||||
| paupd | pacaur -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases |
|
||||
| paupd | pacaur -Sy && sudo abs | Update and refresh the local package and ABS databases |
|
||||
| paupd | pacaur -Sy && sudo aur | Update and refresh the local package and AUR databases |
|
||||
| paupd | pacaur -Sy | Update and refresh the local package database |
|
||||
| paupg | pacaur -Syua | Sync with repositories before upgrading all packages (from AUR too) |
|
||||
| pasu | pacaur -Syua --no-confirm | Same as `paupg`, but without confirmation |
|
||||
| upgrade | pacaur -Syu | Sync with repositories before upgrading packages |
|
||||
|
||||
#### PACMAN
|
||||
|
||||
| Alias | Command | Description |
|
||||
|--------------|-----------------------------------------|--------------------------------------------------------------|
|
||||
| pacin | sudo pacman -S | Install packages from the repositories |
|
||||
| pacins | sudo pacman -U | Install a package from a local file |
|
||||
| pacinsd | sudo pacman -S --asdeps | Install packages as dependencies of another package |
|
||||
| pacloc | pacman -Qi | Display information about a package in the local database |
|
||||
| paclocs | pacman -Qs | Search for packages in the local database |
|
||||
| paclsorphans | sudo pacman -Qdt | List all orphaned packages |
|
||||
| pacmir | sudo pacman -Syy | Force refresh of all package lists after updating mirrorlist |
|
||||
| pacre | sudo pacman -R | Remove packages, keeping its settings and dependencies |
|
||||
| pacrem | sudo pacman -Rns | Remove packages, including its settings and dependencies |
|
||||
| pacrep | pacman -Si | Display information about a package in the repositories |
|
||||
| pacreps | pacman -Ss | Search for packages in the repositories |
|
||||
| pacrmorphans | sudo pacman -Rs $(pacman -Qtdq) | Delete all orphaned packages |
|
||||
| pacupd | sudo pacman -Sy && sudo abs && sudo aur | Update and refresh the local package, ABS and AUR databases |
|
||||
| pacupd | sudo pacman -Sy && sudo abs | Update and refresh the local package and ABS databases |
|
||||
| pacupd | sudo pacman -Sy && sudo aur | Update and refresh the local package and AUR databases |
|
||||
| pacupd | sudo pacman -Sy | Update and refresh the local package database |
|
||||
| pacupg | sudo pacman -Syu | Sync with repositories before upgrading packages |
|
||||
| upgrade | sudo pacman -Syu | Sync with repositories before upgrading packages |
|
||||
| pacfileupg | sudo pacman -Fy | Download fresh package databases from the server |
|
||||
| pacfiles | pacman -Fs | Search package file names for matching strings. |
|
||||
|
||||
| Function | Description |
|
||||
|----------------|------------------------------------------------------|
|
||||
| pacdisowned | List all disowned files in your system |
|
||||
| paclist | List all installed packages with a short description |
|
||||
| pacmanallkeys | Get all keys for developers and trusted users |
|
||||
| pacmansignkeys | Locally trust all keys passed as parameters |
|
||||
|
||||
---
|
||||
|
||||
### FEATURES
|
||||
## Contributors
|
||||
|
||||
| Alias | Function | Description |
|
||||
|:------------:|-----------------------------------------|:--------------------------------------------------------------------------------------------------------------------|
|
||||
| pacin | sudo pacman -S | Install specific package(s) from the repositories |
|
||||
| pacins | sudo pacman -U | Install specific package not from the repositories but from a file |
|
||||
| pacinsd | sudo pacman -S --asdeps | Install given package(s) as dependencies of another package |
|
||||
| pacloc | pacman -Qi | Display information about a given package in the local database |
|
||||
| paclocs | pacman -Qs | Search for package(s) in the local database |
|
||||
| paclsorphans | sudo pacman -Qdt' | List all orphaned packages |
|
||||
| pacmir | sudo pacman -Syy | Force refresh of all package lists after updating /etc/pacman.d/mirrorlist |
|
||||
| pacre | sudo pacman -R | Remove the specified package(s), retaining its configuration(s) and required dependencies |
|
||||
| pacrem | sudo pacman -Rns | Remove the specified package(s), its configuration(s) and unneeded dependencies |
|
||||
| pacrep | pacman -Si | Display information about a given package in the repositories |
|
||||
| pacreps | pacman -Ss | Search for package(s) in the repositories |
|
||||
| pacrmorphans | sudo pacman -Rs $(pacman -Qtdq)' | Delete all orphaned packages |
|
||||
| pacupd | sudo pacman -Sy && sudo abs && sudo aur | Update and refresh the local package, ABS and AUR databases against repositories |
|
||||
| pacupd | sudo pacman -Sy && sudo abs | Update and refresh the local package and ABS databases against repositories |
|
||||
| pacupd | sudo pacman -Sy && sudo aur | Update and refresh the local package and AUR databases against repositories |
|
||||
| pacupd | sudo pacman -Sy | Update and refresh the local package database against repositories |
|
||||
| pacupg | sudo pacman -Syu | Synchronize with repositories before upgrading packages that are out of date on the local system. |
|
||||
| yaconf | yaourt -C | Fix all configuration files with vimdiff |
|
||||
| yain | yaourt -S | Install specific package(s) from the repositories |
|
||||
| yains | yaourt -U | Install specific package not from the repositories but from a file |
|
||||
| yainsd | yaourt -S --asdeps | Install given package(s) as dependencies of another package |
|
||||
| yaloc | yaourt -Qi | Display information about a given package in the local database |
|
||||
| yalocs | yaourt -Qs | Search for package(s) in the local database |
|
||||
| yalst | yaourt -Qe | List installed packages, even those installed from AUR (they're tagged as "local") |
|
||||
| yamir | yaourt -Syy | Force refresh of all package lists after updating /etc/pacman.d/mirrorlist |
|
||||
| yaorph | yaourt -Qtd | Remove orphans using yaourt |
|
||||
| yare | yaourt -R | Remove the specified package(s), retaining its configuration(s) and required dependencies |
|
||||
| yarem | yaourt -Rns | Remove the specified package(s), its configuration(s) and unneeded dependencies |
|
||||
| yarep | yaourt -Si | Display information about a given package in the repositories |
|
||||
| yareps | yaourt -Ss | Search for package(s) in the repositories |
|
||||
| yasu | yaourt --sucre | Same as yaupg, but without confirmation |
|
||||
| yaupd | yaourt -Sy && sudo abs && sudo aur | Update and refresh the local package, ABS and AUR databases against repositories |
|
||||
| yaupd | yaourt -Sy && sudo abs | Update and refresh the local package and ABS databases against repositories |
|
||||
| yaupd | yaourt -Sy && sudo aur | Update and refresh the local package and AUR databases against repositories |
|
||||
| yaupd | yaourt -Sy | Update and refresh the local package database against repositories |
|
||||
| yaupg | yaourt -Syua | Synchronize with repositories before upgrading packages (AUR packages too) that are out of date on the local system |
|
||||
|
||||
| Function | Description |
|
||||
|----------------|:------------------------------------------------------------------------------------------------------------------|
|
||||
| pacdisowned | List all disowned files in your system |
|
||||
| paclist | List all installed packages with a short description - [Source](https://bbs.archlinux.org/viewtopic.php?id=93683) |
|
||||
| pacmanallkeys | Get all keys for developers and trusted users |
|
||||
| pacmansignkeys | |
|
||||
|
||||
---
|
||||
|
||||
### CONTRIBUTORS
|
||||
- Benjamin Boudreau - dreurmail@gmail.com
|
||||
- Celso Miranda - contacto@celsomiranda.net
|
||||
- KhasMek - Boushh@gmail.com
|
||||
- Martin Putniorz - mputniorz@gmail.com
|
||||
- MatthR3D - matthr3d@gmail.com
|
||||
- ornicar - thibault.duplessis@gmail.com
|
||||
|
||||
---
|
||||
- Benjamin Boudreau - dreurmail@gmail.com
|
||||
- Celso Miranda - contacto@celsomiranda.net
|
||||
- KhasMek - Boushh@gmail.com
|
||||
- Martin Putniorz - mputniorz@gmail.com
|
||||
- MatthR3D - matthr3d@gmail.com
|
||||
- ornicar - thibault.duplessis@gmail.com
|
||||
- Juraj Fiala - doctorjellyface@riseup.net
|
||||
- Majora320 (Moses Miller) - Majora320@gmail.com
|
||||
|
|
|
|||
|
|
@ -1,75 +1,110 @@
|
|||
# Archlinux zsh aliases and functions
|
||||
# Usage is also described at https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins
|
||||
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'
|
||||
|
||||
# Look for yaourt, and add some useful functions if we have it.
|
||||
if [[ -x `command -v yaourt` ]]; then
|
||||
upgrade () {
|
||||
|
||||
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
|
||||
}
|
||||
alias yaconf='yaourt -C' # Fix all configuration files with vimdiff
|
||||
# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
|
||||
alias yaupg='yaourt -Syua' # Synchronize with repositories before upgrading packages (AUR packages too) that are out of date on the local system.
|
||||
alias yasu='yaourt --sucre' # Same as yaupg, but without confirmation
|
||||
alias yain='yaourt -S' # Install specific package(s) from the repositories
|
||||
alias yains='yaourt -U' # Install specific package not from the repositories but from a file
|
||||
alias yare='yaourt -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies
|
||||
alias yarem='yaourt -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies
|
||||
alias yarep='yaourt -Si' # Display information about a given package in the repositories
|
||||
alias yareps='yaourt -Ss' # Search for package(s) in the repositories
|
||||
alias yaloc='yaourt -Qi' # Display information about a given package in the local database
|
||||
alias yalocs='yaourt -Qs' # Search for package(s) in the local database
|
||||
alias yalst='yaourt -Qe' # List installed packages, even those installed from AUR (they're tagged as "local")
|
||||
alias yaorph='yaourt -Qtd' # Remove orphans using yaourt
|
||||
# Additional yaourt alias examples
|
||||
if [[ -x `command -v abs` && -x `command -v aur` ]]; then
|
||||
alias yaupd='yaourt -Sy && sudo abs && sudo aur' # Update and refresh the local package, ABS and AUR databases against repositories
|
||||
elif [[ -x `command -v abs` ]]; then
|
||||
alias yaupd='yaourt -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories
|
||||
elif [[ -x `command -v aur` ]]; then
|
||||
alias yaupd='yaourt -Sy && sudo aur' # Update and refresh the local package and AUR databases against repositories
|
||||
else
|
||||
alias yaupd='yaourt -Sy' # Update and refresh the local package database against repositories
|
||||
fi
|
||||
alias yainsd='yaourt -S --asdeps' # Install given package(s) as dependencies of another package
|
||||
alias yamir='yaourt -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
|
||||
else
|
||||
upgrade() {
|
||||
sudo pacman -Syu
|
||||
}
|
||||
upgrade() {
|
||||
sudo pacman -Syu
|
||||
}
|
||||
fi
|
||||
|
||||
# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
|
||||
alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system.
|
||||
alias pacin='sudo pacman -S' # Install specific package(s) from the repositories
|
||||
alias pacins='sudo pacman -U' # Install specific package not from the repositories but from a file
|
||||
alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies
|
||||
alias pacrem='sudo pacman -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies
|
||||
alias pacrep='pacman -Si' # Display information about a given package in the repositories
|
||||
alias pacreps='pacman -Ss' # Search for package(s) in the repositories
|
||||
alias pacloc='pacman -Qi' # Display information about a given package in the local database
|
||||
alias paclocs='pacman -Qs' # Search for package(s) in the local database
|
||||
# Additional pacman alias examples
|
||||
if [[ -x `command -v abs` && -x `command -v aur` ]]; then
|
||||
alias pacupd='sudo pacman -Sy && sudo abs && sudo aur' # Update and refresh the local package, ABS and AUR databases against repositories
|
||||
elif [[ -x `command -v abs` ]]; then
|
||||
alias pacupd='sudo pacman -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories
|
||||
elif [[ -x `command -v aur` ]]; then
|
||||
alias pacupd='sudo pacman -Sy && sudo aur' # Update and refresh the local package and AUR databases against repositories
|
||||
else
|
||||
alias pacupd='sudo pacman -Sy' # Update and refresh the local package database against repositories
|
||||
fi
|
||||
alias pacinsd='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package
|
||||
alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
|
||||
|
||||
# https://bbs.archlinux.org/viewtopic.php?id=93683
|
||||
paclist() {
|
||||
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}'
|
||||
}
|
||||
|
||||
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
|
||||
|
|
@ -79,21 +114,21 @@ pacdisowned() {
|
|||
|
||||
pacman -Qlq | sort -u > "$db"
|
||||
|
||||
find /bin /etc /lib /sbin /usr \
|
||||
! -name lost+found \
|
||||
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
|
||||
find /bin /etc /lib /sbin /usr ! -name lost+found \
|
||||
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
|
||||
|
||||
comm -23 "$fs" "$db"
|
||||
}
|
||||
|
||||
pacmanallkeys() {
|
||||
# Get all keys for developers and trusted users
|
||||
curl https://www.archlinux.org/{developers,trustedusers}/ |
|
||||
awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' |
|
||||
xargs sudo pacman-key --recv-keys
|
||||
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
|
||||
|
|
|
|||
27
plugins/asdf/README.md
Normal file
27
plugins/asdf/README.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
## asdf
|
||||
|
||||
**Maintainer:** [@RobLoach](https://github.com/RobLoach)
|
||||
|
||||
Adds integration with [asdf](https://github.com/asdf-vm/asdf), the extendable version manager, with support for Ruby, Node.js, Elixir, Erlang and more.
|
||||
|
||||
### Installation
|
||||
|
||||
1. Enable the plugin by adding it to your `plugins` definition in `~/.zshrc`.
|
||||
|
||||
```
|
||||
plugins=(asdf)
|
||||
```
|
||||
|
||||
2. [Install asdf](https://github.com/asdf-vm/asdf#setup) by running the following:
|
||||
```
|
||||
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
See the [asdf usage documentation](https://github.com/asdf-vm/asdf#usage) for information on how to use asdf:
|
||||
|
||||
```
|
||||
asdf plugin-add nodejs git@github.com:asdf-vm/asdf-nodejs.git
|
||||
asdf install nodejs 5.9.1
|
||||
```
|
||||
7
plugins/asdf/asdf.plugin.zsh
Normal file
7
plugins/asdf/asdf.plugin.zsh
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Find where asdf should be installed.
|
||||
ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
|
||||
|
||||
# Load asdf, if found.
|
||||
if [ -f $ASDF_DIR/asdf.sh ]; then
|
||||
. $ASDF_DIR/asdf.sh
|
||||
fi
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
## atom
|
||||
|
||||
This plugin makes "at" a useful function for invoking the Atom Editor.
|
||||
|
||||
Originally by Github user [aforty](https://github.com/aforty) for OSX, modified to alias 'at' to 'atom' for Linux, since atom already works on the terminal for Linux, and calling 'at' in a non-OSX environment should still work.
|
||||
|
||||
### Requirements
|
||||
|
||||
* [Atom](https://atom.io/)
|
||||
|
||||
### Usage
|
||||
|
||||
* If `at` command is called without an argument, launch Atom
|
||||
|
||||
* If `at` is passed a directory, open it in Atom
|
||||
|
||||
* If `at` is passed a file, open it in Atom
|
||||
|
||||
### Examples
|
||||
|
||||
* Open the current dir in atom: `at .`
|
||||
* Open another dir in atom: `at path/to/folder`
|
||||
* Open a file: `at filename.extension`
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
case $OSTYPE in
|
||||
darwin*)
|
||||
local _atom_paths > /dev/null 2>&1
|
||||
_atom_paths=(
|
||||
"$HOME/Applications/Atom.app"
|
||||
"/Applications/Atom.app"
|
||||
)
|
||||
|
||||
for _atom_path in $_atom_paths; do
|
||||
if [[ -a $_atom_path ]]; then
|
||||
alias at="open -a '$_atom_path'"
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
cygwin)
|
||||
local _atom_path > /dev/null 2>&1
|
||||
|
||||
_atom_path=${LOCALAPPDATA}/atom/bin/atom
|
||||
|
||||
if [[ -a $_atom_path ]]; then
|
||||
cyg_open_atom()
|
||||
{
|
||||
if [[ -n $1 ]]; then
|
||||
${_atom_path} `cygpath -w -a $1`
|
||||
else
|
||||
${_atom_path}
|
||||
fi
|
||||
}
|
||||
|
||||
alias at=cyg_open_atom
|
||||
fi
|
||||
;;
|
||||
linux*)
|
||||
# Alerts the user if 'atom' is not a found command.
|
||||
type atom >/dev/null 2>&1 && alias at="atom" || { echo >&2 "You have enabled the atom oh-my-zsh plugin on Linux, but atom is not a recognized command. Please make sure you have it installed before using this plugin."; }
|
||||
esac
|
||||
|
|
@ -1,12 +1,26 @@
|
|||
# Activates autoenv or reports its failure
|
||||
if ! source $HOME/.autoenv/activate.sh 2>/dev/null; then
|
||||
echo '-------- AUTOENV ---------'
|
||||
echo 'Could not find ~/.autoenv/activate.sh.'
|
||||
echo 'Please check if autoenv is correctly installed.'
|
||||
echo 'In the meantime the autoenv plugin is DISABLED.'
|
||||
echo '--------------------------'
|
||||
return 1
|
||||
() {
|
||||
if ! type autoenv_init >/dev/null; then
|
||||
for d (~/.autoenv ~/.local/bin /usr/local/opt/autoenv /usr/local/bin); do
|
||||
if [[ -e $d/activate.sh ]]; then
|
||||
autoenv_dir=$d
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ -z $autoenv_dir ]]; then
|
||||
cat <<END >&2
|
||||
-------- AUTOENV ---------
|
||||
Could not locate autoenv installation.
|
||||
Please check if autoenv is correctly installed.
|
||||
In the meantime the autoenv plugin is DISABLED.
|
||||
--------------------------
|
||||
END
|
||||
return 1
|
||||
fi
|
||||
source $autoenv_dir/activate.sh
|
||||
fi
|
||||
}
|
||||
[[ $? != 0 ]] && return $?
|
||||
|
||||
# The use_env call below is a reusable command to activate/create a new Python
|
||||
# virtualenv, requiring only a single declarative line of code in your .env files.
|
||||
|
|
|
|||
|
|
@ -64,15 +64,15 @@ if [[ "$OSTYPE" = darwin* ]] ; then
|
|||
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]]
|
||||
}
|
||||
|
||||
elif [[ $(uname) == "Linux" ]] ; then
|
||||
elif [[ "$OSTYPE" = linux* ]] ; then
|
||||
|
||||
function battery_is_charging() {
|
||||
! [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
|
||||
! [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
|
||||
}
|
||||
|
||||
function battery_pct() {
|
||||
if (( $+commands[acpi] )) ; then
|
||||
echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')"
|
||||
echo "$(acpi 2>/dev/null | cut -f2 -d ',' | tr -cd '[:digit:]')"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
@ -85,14 +85,14 @@ elif [[ $(uname) == "Linux" ]] ; then
|
|||
}
|
||||
|
||||
function battery_time_remaining() {
|
||||
if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
|
||||
echo $(acpi | cut -f3 -d ',')
|
||||
if [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
|
||||
echo $(acpi 2>/dev/null | cut -f3 -d ',')
|
||||
fi
|
||||
}
|
||||
|
||||
function battery_pct_prompt() {
|
||||
b=$(battery_pct_remaining)
|
||||
if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
|
||||
if [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
|
||||
if [ $b -gt 50 ] ; then
|
||||
color='green'
|
||||
elif [ $b -gt 20 ] ; then
|
||||
|
|
@ -100,7 +100,7 @@ elif [[ $(uname) == "Linux" ]] ; then
|
|||
else
|
||||
color='red'
|
||||
fi
|
||||
echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}"
|
||||
echo "%{$fg[$color]%}$(battery_pct_remaining)%%%{$reset_color%}"
|
||||
else
|
||||
echo "∞"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ _bower ()
|
|||
compadd "$@" $(echo $bower_package_list)
|
||||
;;
|
||||
*)
|
||||
_arguments \
|
||||
$_no_color \
|
||||
;;
|
||||
esac
|
||||
|
|
|
|||
33
plugins/branch/README.md
Normal file
33
plugins/branch/README.md
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# Branch
|
||||
|
||||
Displays the current Git or Mercurial branch fast.
|
||||
|
||||
## Speed test
|
||||
|
||||
### Mercurial
|
||||
|
||||
```shell
|
||||
$ time hg branch
|
||||
0.11s user 0.14s system 70% cpu 0.355 total
|
||||
```
|
||||
|
||||
### Branch plugin
|
||||
|
||||
```shell
|
||||
$ time zsh /tmp/branch_prompt_info_test.zsh
|
||||
0.00s user 0.01s system 78% cpu 0.014 total
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Edit your theme file (eg.: `~/.oh-my-zsh/theme/robbyrussell.zsh-theme`)
|
||||
adding `$(branch_prompt_info)` in your prompt like this:
|
||||
|
||||
```diff
|
||||
- PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
|
||||
+ PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)$(branch_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
|
||||
```
|
||||
|
||||
## Maintainer
|
||||
|
||||
Victor Torres (<vpaivatorres@gmail.com>)
|
||||
31
plugins/branch/branch.plugin.zsh
Normal file
31
plugins/branch/branch.plugin.zsh
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Branch: displays the current Git or Mercurial branch fast.
|
||||
# Victor Torres <vpaivatorres@gmail.com>
|
||||
# Oct 2, 2015
|
||||
|
||||
function branch_prompt_info() {
|
||||
# Defines path as current directory
|
||||
local current_dir=$PWD
|
||||
# While current path is not root path
|
||||
while [[ $current_dir != '/' ]]
|
||||
do
|
||||
# Git repository
|
||||
if [[ -d "${current_dir}/.git" ]]
|
||||
then
|
||||
echo '±' ${"$(<"$current_dir/.git/HEAD")"##*/}
|
||||
return;
|
||||
fi
|
||||
# Mercurial repository
|
||||
if [[ -d "${current_dir}/.hg" ]]
|
||||
then
|
||||
if [[ -f "$current_dir/.hg/branch" ]]
|
||||
then
|
||||
echo '☿' $(<"$current_dir/.hg/branch")
|
||||
else
|
||||
echo '☿ default'
|
||||
fi
|
||||
return;
|
||||
fi
|
||||
# Defines path as parent directory and keeps looking for :)
|
||||
current_dir="${current_dir:h}"
|
||||
done
|
||||
}
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
# Autocompletion for homebrew-cask.
|
||||
#
|
||||
# This script intercepts calls to the brew plugin and adds autocompletion
|
||||
# for the cask subcommand.
|
||||
#
|
||||
# Author: https://github.com/pstadler
|
||||
|
||||
compdef _brew-cask brew
|
||||
|
||||
_brew-cask()
|
||||
{
|
||||
local curcontext="$curcontext" state line
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C \
|
||||
':command:->command' \
|
||||
':subcmd:->subcmd' \
|
||||
'*::options:->options'
|
||||
|
||||
case $state in
|
||||
(command)
|
||||
__call_original_brew
|
||||
cask_commands=(
|
||||
'cask:manage casks'
|
||||
)
|
||||
_describe -t commands 'brew cask command' cask_commands ;;
|
||||
|
||||
(subcmd)
|
||||
case "$line[1]" in
|
||||
cask)
|
||||
if (( CURRENT == 3 )); then
|
||||
local -a subcommands
|
||||
subcommands=(
|
||||
"alfred:used to modify Alfred's scope to include the Caskroom"
|
||||
'audit:verifies installability of casks'
|
||||
'checklinks:checks for bad cask links'
|
||||
'cleanup:cleans up cached downloads'
|
||||
'create:creates a cask of the given name and opens it in an editor'
|
||||
'doctor:checks for configuration issues'
|
||||
'edit:edits the cask of the given name'
|
||||
'fetch:downloads Cask resources to local cache'
|
||||
'home:opens the homepage of the cask of the given name'
|
||||
'info:displays information about the cask of the given name'
|
||||
'install:installs the cask of the given name'
|
||||
'list:with no args, lists installed casks; given installed casks, lists installed files'
|
||||
'search:searches all known casks'
|
||||
'uninstall:uninstalls the cask of the given name'
|
||||
"update:a synonym for 'brew update'"
|
||||
)
|
||||
_describe -t commands "brew cask subcommand" subcommands
|
||||
fi ;;
|
||||
|
||||
*)
|
||||
__call_original_brew ;;
|
||||
esac ;;
|
||||
|
||||
(options)
|
||||
local -a casks installed_casks
|
||||
local expl
|
||||
case "$line[2]" in
|
||||
list|uninstall)
|
||||
__brew_installed_casks
|
||||
_wanted installed_casks expl 'installed casks' compadd -a installed_casks ;;
|
||||
audit|edit|home|info|install)
|
||||
__brew_all_casks
|
||||
_wanted casks expl 'all casks' compadd -a casks ;;
|
||||
esac ;;
|
||||
esac
|
||||
}
|
||||
|
||||
__brew_all_casks() {
|
||||
casks=(`brew cask search`)
|
||||
}
|
||||
|
||||
__brew_installed_casks() {
|
||||
installed_casks=(`brew cask list`)
|
||||
}
|
||||
|
||||
__call_original_brew()
|
||||
{
|
||||
local ret=1
|
||||
_call_function ret _brew
|
||||
compdef _brew-cask brew
|
||||
}
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
#compdef brew
|
||||
#autoload
|
||||
|
||||
# imported from the latest homebrew contributions
|
||||
|
||||
_brew_all_formulae() {
|
||||
formulae=(`brew search`)
|
||||
}
|
||||
|
||||
_brew_installed_formulae() {
|
||||
installed_formulae=(`brew list`)
|
||||
}
|
||||
|
||||
_brew_installed_taps() {
|
||||
installed_taps=(`brew tap`)
|
||||
}
|
||||
|
||||
_brew_outdated_formulae() {
|
||||
outdated_formulae=(`brew outdated`)
|
||||
}
|
||||
|
||||
local -a _1st_arguments
|
||||
_1st_arguments=(
|
||||
'audit:check formulae for Homebrew coding style'
|
||||
'cat:display formula file for a formula'
|
||||
'cleanup:uninstall unused and old versions of packages'
|
||||
'commands:show a list of commands'
|
||||
'create:create a new formula'
|
||||
'deps:list dependencies of a formula'
|
||||
'doctor:audits your installation for common issues'
|
||||
'edit:edit a formula'
|
||||
'fetch:download formula resources to the cache'
|
||||
'gist-logs:generate a gist of the full build logs'
|
||||
'home:visit the homepage of a formula or the brew project'
|
||||
'info:information about a formula'
|
||||
'install:install a formula'
|
||||
'reinstall:install a formula anew; re-using its current options'
|
||||
'leaves:show installed formulae that are not dependencies of another installed formula'
|
||||
'link:link a formula'
|
||||
'list:list files in a formula or not-installed formulae'
|
||||
'log:git commit log for a formula'
|
||||
'missing:check all installed formuale for missing dependencies.'
|
||||
'outdated:list formulae for which a newer version is available'
|
||||
'pin:pin specified formulae'
|
||||
'postinstall:perform post_install for a given formula'
|
||||
'prune:remove dead links'
|
||||
'remove:remove a formula'
|
||||
'search:search for a formula (/regex/ or string)'
|
||||
'switch:switch linkage between installed versions of a formula'
|
||||
'tap:tap a new formula repository from GitHub, or list existing taps'
|
||||
'test-bot:test a formula and build a bottle'
|
||||
'uninstall:uninstall a formula'
|
||||
'unlink:unlink a formula'
|
||||
'unpin:unpin specified formulae'
|
||||
'untap:remove a tapped repository'
|
||||
'update:pull latest repository'
|
||||
'upgrade:upgrade outdated formulae'
|
||||
'uses:show formulae which depend on a formula'
|
||||
)
|
||||
|
||||
local expl
|
||||
local -a formulae installed_formulae installed_taps outdated_formulae
|
||||
|
||||
_arguments \
|
||||
'(-v)-v[verbose]' \
|
||||
'(--cellar)--cellar[brew cellar]' \
|
||||
'(--config)--config[brew configuration]' \
|
||||
'(--env)--env[brew environment]' \
|
||||
'(--repository)--repository[brew repository]' \
|
||||
'(--version)--version[version information]' \
|
||||
'(--prefix)--prefix[where brew lives on this system]' \
|
||||
'(--cache)--cache[brew cache]' \
|
||||
'(--force)--force[brew force]' \
|
||||
'*:: :->subcmds' && return 0
|
||||
|
||||
if (( CURRENT == 1 )); then
|
||||
_describe -t commands "brew subcommand" _1st_arguments
|
||||
return
|
||||
fi
|
||||
|
||||
case "$words[1]" in
|
||||
install|reinstall|audit|home|homepage|log|info|abv|uses|cat|deps|edit|options)
|
||||
_brew_all_formulae
|
||||
_wanted formulae expl 'all formulae' compadd -a formulae ;;
|
||||
list|ls)
|
||||
_arguments \
|
||||
'(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \
|
||||
'(--pinned)--pinned[list all versions of pinned formulae]' \
|
||||
'(--versions)--versions[list all installed versions of a formula]' \
|
||||
'1: :->forms' && return 0
|
||||
|
||||
if [[ "$state" == forms ]]; then
|
||||
_brew_installed_formulae
|
||||
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae
|
||||
fi ;;
|
||||
remove|rm|uninstall|unlink|cleanup|link|ln|pin|unpin)
|
||||
_brew_installed_formulae
|
||||
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
|
||||
search|-S)
|
||||
_arguments \
|
||||
'(--macports)--macports[search the macports repository]' \
|
||||
'(--fink)--fink[search the fink repository]' ;;
|
||||
untap)
|
||||
_brew_installed_taps
|
||||
_wanted installed_taps expl 'installed taps' compadd -a installed_taps ;;
|
||||
upgrade)
|
||||
_brew_outdated_formulae
|
||||
_wanted outdated_formulae expl 'outdated formulae' compadd -a outdated_formulae ;;
|
||||
esac
|
||||
|
|
@ -2,3 +2,19 @@ alias brews='brew list -1'
|
|||
alias bubo='brew update && brew outdated'
|
||||
alias bubc='brew upgrade && brew cleanup'
|
||||
alias bubu='bubo && bubc'
|
||||
|
||||
if command mkdir "$ZSH_CACHE_DIR/.brew-completion-message" 2>/dev/null; then
|
||||
print -P '%F{yellow}'Oh My Zsh brew plugin:
|
||||
cat <<-'EOF'
|
||||
|
||||
With the advent of their 1.0 release, Homebrew has decided to bundle
|
||||
the zsh completion as part of the brew installation, so we no longer
|
||||
ship it with the brew plugin; now it only has brew aliases.
|
||||
|
||||
If you find that brew completion no longer works, make sure you have
|
||||
your Homebrew installation fully up to date.
|
||||
|
||||
You will only see this message once.
|
||||
EOF
|
||||
print -P '%f'
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
- `bl` aliased to `bundle list`
|
||||
- `bp` aliased to `bundle package`
|
||||
- `bo` aliased to `bundle open`
|
||||
- `bout` aliased to `bundle outdated`
|
||||
- `bu` aliased to `bundle update`
|
||||
- `bi` aliased to `bundle install --jobs=<cpu core count>` (only for bundler `>= 1.4.0`)
|
||||
- adds a wrapper for common gems:
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ alias be="bundle exec"
|
|||
alias bl="bundle list"
|
||||
alias bp="bundle package"
|
||||
alias bo="bundle open"
|
||||
alias bout="bundle outdated"
|
||||
alias bu="bundle update"
|
||||
alias bi="bundle_install"
|
||||
alias bcn="bundle clean"
|
||||
|
|
@ -57,7 +58,7 @@ bundle_install() {
|
|||
if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then
|
||||
if [[ "$OSTYPE" = darwin* ]]
|
||||
then
|
||||
local cores_num="$(sysctl hw.ncpu | awk '{print $2}')"
|
||||
local cores_num="$(sysctl -n hw.ncpu)"
|
||||
else
|
||||
local cores_num="$(nproc)"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,11 +1,31 @@
|
|||
# CakePHP 3 basic command completion
|
||||
_cakephp3_get_command_list () {
|
||||
cakephp3commands=($(bin/cake completion commands));printf "%s\n" "${cakephp3commands[@]}"
|
||||
bin/cake Completion commands
|
||||
}
|
||||
|
||||
_cakephp3_get_sub_command_list () {
|
||||
bin/cake Completion subcommands ${words[2]}
|
||||
}
|
||||
|
||||
_cakephp3_get_3rd_argument () {
|
||||
bin/cake ${words[2]} ${words[3]} | \grep '\-\ '| \awk '{print $2}'
|
||||
}
|
||||
|
||||
_cakephp3 () {
|
||||
if [ -f bin/cake ]; then
|
||||
compadd `_cakephp3_get_command_list`
|
||||
local -a has3rdargument
|
||||
has3rdargument=("all" "controller" "fixture" "model" "template")
|
||||
if [ -f bin/cake ]; then
|
||||
if (( CURRENT == 2 )); then
|
||||
compadd $(_cakephp3_get_command_list)
|
||||
fi
|
||||
if (( CURRENT == 3 )); then
|
||||
compadd $(_cakephp3_get_sub_command_list)
|
||||
fi
|
||||
if (( CURRENT == 4 )); then
|
||||
if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]]; then
|
||||
compadd $(_cakephp3_get_3rd_argument)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
@ -14,6 +34,5 @@ compdef _cakephp3 cake
|
|||
|
||||
#Alias
|
||||
alias c3='bin/cake'
|
||||
|
||||
alias c3cache='bin/cake orm_cache clear'
|
||||
alias c3migrate='bin/cake migrations migrate'
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#compdef shipit
|
||||
#compdef capit
|
||||
#autoload
|
||||
|
||||
# Added `shipit` because `cap` is a reserved word. `cap` completion doesn't work.
|
||||
# Added `capit` because `cap` is a reserved word. `cap` completion doesn't work.
|
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module
|
||||
|
||||
local curcontext="$curcontext" state line ret=1
|
||||
|
|
@ -14,7 +14,7 @@ _arguments -C \
|
|||
_cap_tasks() {
|
||||
if [[ -f config/deploy.rb || -f Capfile ]]; then
|
||||
if [[ ! -f .cap_tasks~ ]]; then
|
||||
shipit --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~
|
||||
capit --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~
|
||||
fi
|
||||
|
||||
OLD_IFS=$IFS
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Added `shipit` because `cap` is a reserved word. `cap` completion doesn't work.
|
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module
|
||||
|
||||
func shipit() {
|
||||
func capit() {
|
||||
if [ -f Gemfile ]
|
||||
then
|
||||
bundle exec cap $*
|
||||
|
|
|
|||
11
plugins/cargo/README.md
Normal file
11
plugins/cargo/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# cargo
|
||||
|
||||
This plugin adds completion for the Rust build tool [`cargo`](https://github.com/rust-lang/cargo).
|
||||
|
||||
To use it, add `cargo` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... cargo)
|
||||
```
|
||||
|
||||
Updated on October 4th, 2016.
|
||||
497
plugins/cargo/_cargo
Normal file
497
plugins/cargo/_cargo
Normal file
|
|
@ -0,0 +1,497 @@
|
|||
#compdef cargo
|
||||
|
||||
typeset -A opt_args
|
||||
autoload -U regexp-replace
|
||||
|
||||
_cargo() {
|
||||
|
||||
_arguments \
|
||||
'(- 1 *)'{-h,--help}'[show help message]' \
|
||||
'(- 1 *)'--list'[list installed commands]' \
|
||||
'(- 1 *)'{-v,--verbose}'[use verbose output]' \
|
||||
'(- 1 *)'--color'[colorization option]' \
|
||||
'(- 1 *)'{-V,--version}'[show version information]' \
|
||||
'1: :_cargo_cmds' \
|
||||
'*:: :->args'
|
||||
|
||||
case $state in
|
||||
args)
|
||||
case $words[1] in
|
||||
bench)
|
||||
_arguments \
|
||||
'--features=[space separated feature list]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
||||
"${command_scope_spec[@]}" \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'--no-default-features[do not build the default features]' \
|
||||
'--no-run[compile but do not run]' \
|
||||
'(-p,--package)'{-p=,--package=}'[package to run benchmarks for]:packages:_get_package_names' \
|
||||
'--target=[target triple]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
build)
|
||||
_arguments \
|
||||
'--features=[space separated feature list]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
||||
"${command_scope_spec[@]}" \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'--no-default-features[do not build the default features]' \
|
||||
'(-p,--package)'{-p=,--package=}'[package to build]:packages:_get_package_names' \
|
||||
'--release=[build in release mode]' \
|
||||
'--target=[target triple]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
clean)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'(-p,--package)'{-p=,--package=}'[package to clean]:packages:_get_package_names' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--release[whether or not to clean release artifacts]' \
|
||||
'--target=[target triple(default:all)]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
doc)
|
||||
_arguments \
|
||||
'--features=[space separated feature list]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'--no-deps[do not build docs for dependencies]' \
|
||||
'--no-default-features[do not build the default features]' \
|
||||
'--open[open docs in browser after the build]' \
|
||||
'(-p, --package)'{-p,--package}'=[package to document]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--release[build artifacts in release mode, with optimizations]' \
|
||||
'--target=[build for the target triple]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
fetch)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
generate-lockfile)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
git-checkout)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'q(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--reference=[REF]' \
|
||||
'--url=[URL]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
help)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'*: :_cargo_cmds' \
|
||||
;;
|
||||
|
||||
init)
|
||||
_arguments \
|
||||
'--bin[use binary template]' \
|
||||
'--vcs:initialize a new repo with a given VCS:(git hg none)' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--name=[set the resulting package name]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
install)
|
||||
_arguments \
|
||||
'--bin=[only install the specified binary]' \
|
||||
'--branch=[branch to use when installing from git]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
'--debug[build in debug mode instead of release mode]' \
|
||||
'--example[install the specified example instead of binaries]' \
|
||||
'--features=[space separated feature list]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'--git=[URL from which to install the crate]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
||||
'--no-default-features[do not build the default features]' \
|
||||
'--path=[local filesystem path to crate to install]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--rev=[specific commit to use when installing from git]' \
|
||||
'--root=[directory to install packages into]' \
|
||||
'--tag=[tag to use when installing from git]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--vers=[version to install from crates.io]' \
|
||||
;;
|
||||
|
||||
locate-project)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
;;
|
||||
|
||||
login)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--host=[Host to set the token for]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
metadata)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
"--no-deps[output information only about the root package and don't fetch dependencies]" \
|
||||
'--no-default-features[do not include the default feature]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'--features=[space separated feature list]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'--format-version=[format version(default: 1)]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
new)
|
||||
_arguments \
|
||||
'--bin[use binary template]' \
|
||||
'--vcs:initialize a new repo with a given VCS:(git hg none)' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--name=[set the resulting package name]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
owner)
|
||||
_arguments \
|
||||
'(-a, --add)'{-a,--add}'[add owner LOGIN]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--index[registry index]' \
|
||||
'(-l, --list)'{-l,--list}'[list owners of a crate]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-r, --remove)'{-r,--remove}'[remove owner LOGIN]' \
|
||||
'--token[API token to use when authenticating]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
package)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-l, --list)'{-l,--list}'[print files included in a package without making one]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'--no-metadata[ignore warnings about a lack of human-usable metadata]' \
|
||||
'--no-verify[do not build to verify contents]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
pkgid)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
publish)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--host=[Host to set the token for]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'--no-verify[Do not verify tarball until before publish]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--token[token to use when uploading]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
read-manifest)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
run)
|
||||
_arguments \
|
||||
'--example=[name of the bin target]' \
|
||||
'--features=[space separated feature list]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'--bin=[name of the bin target]' \
|
||||
'--no-default-features[do not build the default features]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--release=[build in release mode]' \
|
||||
'--target=[target triple]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
'*: :_normal' \
|
||||
;;
|
||||
|
||||
rustc)
|
||||
_arguments \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
'--features=[features to compile for the package]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-j, --jobs)'{-j,--jobs}'=[number of parallel jobs, defaults to # of CPUs]' \
|
||||
'--manifest-path=[path to the manifest to fetch dependencies for]' \
|
||||
'--no-default-features[do not compile default features for the package]' \
|
||||
'(-p, --package)'{-p,--package}'=[profile to compile for]' \
|
||||
'--profile=[profile to build the selected target for]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--release[build artifacts in release mode, with optimizations]' \
|
||||
'--target=[target triple which compiles will be for]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
"${command_scope_spec[@]}" \
|
||||
;;
|
||||
|
||||
rustdoc)
|
||||
_arguments \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
'--features=[space-separated list of features to also build]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-j, --jobs)'{-j,--jobs}'=[number of parallel jobs, defaults to # of CPUs]' \
|
||||
'--manifest-path=[path to the manifest to document]' \
|
||||
'--no-default-features[do not build the `default` feature]' \
|
||||
'--open[open the docs in a browser after the operation]' \
|
||||
'(-p, --package)'{-p,--package}'=[package to document]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--release[build artifacts in release mode, with optimizations]' \
|
||||
'--target=[build for the target triple]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
"${command_scope_spec[@]}" \
|
||||
;;
|
||||
|
||||
search)
|
||||
_arguments \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--host=[host of a registry to search in]' \
|
||||
'--limit=[limit the number of results]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
;;
|
||||
|
||||
test)
|
||||
_arguments \
|
||||
'--features=[space separated feature list]' \
|
||||
'--all-features[enable all available features]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'--test=[test name]: :_test_names' \
|
||||
'--no-default-features[do not build the default features]' \
|
||||
'--no-fail-fast[run all tests regardless of failure]' \
|
||||
'--no-run[compile but do not run]' \
|
||||
'(-p,--package)'{-p=,--package=}'[package to run tests for]:packages:_get_package_names' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--release[build artifacts in release mode, with optimizations]' \
|
||||
'--target=[target triple]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
'1: :_test_names' \
|
||||
;;
|
||||
|
||||
uninstall)
|
||||
_arguments \
|
||||
'--bin=[only uninstall the binary NAME]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[less output printed to stdout]' \
|
||||
'--root=[directory to uninstall packages from]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
;;
|
||||
|
||||
update)
|
||||
_arguments \
|
||||
'--aggressive=[force dependency update]' \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'(-p,--package)'{-p=,--package=}'[package to update]:packages:__get_package_names' \
|
||||
'--precise=[update single dependency to PRECISE]: :' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
verify-project)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--manifest-path=[path to manifest]: :_files -/' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
version)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
;;
|
||||
|
||||
yank)
|
||||
_arguments \
|
||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
||||
'--index[registry index]' \
|
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
||||
'--token[API token to use when authenticating]' \
|
||||
'--undo[undo a yank, putting a version back into the index]' \
|
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
||||
'--color=:colorization option:(auto always never)' \
|
||||
'--vers[yank version]' \
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_cargo_cmds(){
|
||||
local -a commands;commands=(
|
||||
'bench:execute all benchmarks of a local package'
|
||||
'build:compile the current project'
|
||||
'clean:remove generated artifacts'
|
||||
'doc:build package documentation'
|
||||
'fetch:fetch package dependencies'
|
||||
'generate-lockfile:create lockfile'
|
||||
'git-checkout:git checkout'
|
||||
'help:get help for commands'
|
||||
'init:create new project in current directory'
|
||||
'install:install a Rust binary'
|
||||
'locate-project:print "Cargo.toml" location'
|
||||
'login:login to remote server'
|
||||
'metadata:the metadata for a project in json'
|
||||
'new:create a new project'
|
||||
'owner:manage the owners of a crate on the registry'
|
||||
'package:assemble local package into a distributable tarball'
|
||||
'pkgid:print a fully qualified package specification'
|
||||
'publish:upload package to the registry'
|
||||
'read-manifest:print manifest in JSON format'
|
||||
'run:run the main binary of the local package'
|
||||
'rustc:compile a package and all of its dependencies'
|
||||
'rustdoc:build documentation for a package'
|
||||
'search:search packages on crates.io'
|
||||
'test:execute all unit and tests of a local package'
|
||||
'uninstall:remove a Rust binary'
|
||||
'update:update dependencies'
|
||||
'verify-project:check Cargo.toml'
|
||||
'version:show version information'
|
||||
'yank:remove pushed file from index'
|
||||
)
|
||||
_describe 'command' commands
|
||||
|
||||
}
|
||||
|
||||
|
||||
#FIXME: Disabled until fixed
|
||||
#gets package names from the manifest file
|
||||
_get_package_names()
|
||||
{
|
||||
}
|
||||
|
||||
#TODO:see if it makes sense to have 'locate-project' to have non-json output.
|
||||
#strips package name from json stuff
|
||||
_locate_manifest(){
|
||||
local manifest=`cargo locate-project 2>/dev/null`
|
||||
regexp-replace manifest '\{"root":"|"\}' ''
|
||||
echo $manifest
|
||||
}
|
||||
|
||||
# Extracts the values of "name" from the array given in $1 and shows them as
|
||||
# command line options for completion
|
||||
_get_names_from_array()
|
||||
{
|
||||
local -a filelist;
|
||||
local manifest=$(_locate_manifest)
|
||||
if [[ -z $manifest ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
local last_line
|
||||
local -a names;
|
||||
local in_block=false
|
||||
local block_name=$1
|
||||
names=()
|
||||
while read line
|
||||
do
|
||||
if [[ $last_line == "[[$block_name]]" ]]; then
|
||||
in_block=true
|
||||
else
|
||||
if [[ $last_line =~ '.*\[\[.*' ]]; then
|
||||
in_block=false
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $in_block == true ]]; then
|
||||
if [[ $line =~ '.*name.*=' ]]; then
|
||||
regexp-replace line '^.*name *= *|"' ""
|
||||
names+=$line
|
||||
fi
|
||||
fi
|
||||
|
||||
last_line=$line
|
||||
done < $manifest
|
||||
_describe $block_name names
|
||||
|
||||
}
|
||||
|
||||
#Gets the test names from the manifest file
|
||||
_test_names()
|
||||
{
|
||||
_get_names_from_array "test"
|
||||
}
|
||||
|
||||
#Gets the bench names from the manifest file
|
||||
_benchmark_names()
|
||||
{
|
||||
_get_names_from_array "bench"
|
||||
}
|
||||
|
||||
# These flags are mutally exclusive specifiers for the scope of a command; as
|
||||
# they are used in multiple places without change, they are expanded into the
|
||||
# appropriate command's `_arguments` where appropriate.
|
||||
set command_scope_spec
|
||||
command_scope_spec=(
|
||||
'(--bin --example --test --lib)--bench=[benchmark name]: :_benchmark_names'
|
||||
'(--bench --bin --test --lib)--example=[example name]'
|
||||
'(--bench --example --test --lib)--bin=[binary name]'
|
||||
'(--bench --bin --example --test)--lib=[library name]'
|
||||
'(--bench --bin --example --lib)--test=[test name]'
|
||||
)
|
||||
|
||||
|
||||
_cargo
|
||||
15
plugins/cask/README.md
Normal file
15
plugins/cask/README.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Cask plugin
|
||||
|
||||
[Cask](https://github.com/cask/cask) is a project management tool for Emacs that helps
|
||||
automate the package development cycle; development, dependencies, testing, building,
|
||||
packaging and more.
|
||||
|
||||
This plugin loads `cask` completion from non-standard locations, such as if installed
|
||||
via Homebrew or others. To enable it, add `cask` to your plugins array:
|
||||
|
||||
```zsh
|
||||
plugins=(... cask)
|
||||
```
|
||||
|
||||
Make sure you have the `cask` directory in your `$PATH` before loading Oh My Zsh,
|
||||
otherwise you'll get a "command not found" error.
|
||||
|
|
@ -1,5 +1,26 @@
|
|||
if which cask &> /dev/null; then
|
||||
source $(dirname $(which cask))/../etc/cask_completion.zsh
|
||||
else
|
||||
print "zsh cask plugin: cask not found"
|
||||
fi
|
||||
() {
|
||||
emulate -L zsh
|
||||
|
||||
if ! (( $+commands[cask] )); then
|
||||
print "zsh cask plugin: cask command not found" >&2
|
||||
return
|
||||
fi
|
||||
|
||||
cask_base=${commands[cask]:h:h}
|
||||
|
||||
# Plain cask installation location (for Cask 0.7.2 and earlier)
|
||||
comp_files=($cask_base/etc/cask_completion.zsh)
|
||||
|
||||
# Mac Homebrew installs the completion in a different location
|
||||
if (( $+commands[brew] )); then
|
||||
comp_files+=($(brew --prefix)/share/zsh/site-functions/cask_completion.zsh)
|
||||
fi
|
||||
|
||||
# Load first found file
|
||||
for f in $comp_files; do
|
||||
if [[ -f "$f" ]]; then
|
||||
source "$f"
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,9 +16,6 @@
|
|||
# rvm and rbenv plugins also provide this alias
|
||||
alias rubies='chruby'
|
||||
|
||||
local _chruby_path
|
||||
local _chruby_auto
|
||||
|
||||
_homebrew-installed() {
|
||||
whence brew &> /dev/null
|
||||
}
|
||||
|
|
@ -42,6 +39,9 @@ if _ruby-build_installed; then
|
|||
fi
|
||||
|
||||
_source_from_omz_settings() {
|
||||
local _chruby_path
|
||||
local _chruby_auto
|
||||
|
||||
zstyle -s :omz:plugins:chruby path _chruby_path
|
||||
zstyle -s :omz:plugins:chruby auto _chruby_auto
|
||||
|
||||
|
|
|
|||
|
|
@ -17,9 +17,11 @@ Chuck Norris' blood type is AK+. Ass-Kicking Positive. It is compatible only wit
|
|||
Chuck Norris is 1/8th Cherokee. This has nothing to do with ancestry, the man ate a fucking Indian.
|
||||
%
|
||||
In fine print on the last page of the Guinness Book of World Records it notes that all world records are held by Chuck Norris, and those listed in the book are simply the closest anyone else has ever gotten.
|
||||
%
|
||||
There is no chin behind Chuck Norris' beard. There is only another fist.
|
||||
%
|
||||
Chuck Norris does not teabag the ladies. He potato-sacks them.
|
||||
%
|
||||
Pluto is actually an orbiting group of British soldiers from the American Revolution who entered space after the Chuck gave them a roundhouse kick to the face.
|
||||
%
|
||||
When Chuck Norris goes to donate blood, he declines the syringe, and instead requests a hand gun and a bucket.
|
||||
|
|
@ -127,6 +129,7 @@ Chuck Norris can drink an entire gallon of milk in thirty-seven seconds.
|
|||
Little known medical fact: Chuck Norris invented the Caesarean section when he roundhouse-kicked his way out of his monther's womb.
|
||||
%
|
||||
Chuck Norris doesn't bowl strikes, he just knocks down one pin and the other nine faint.
|
||||
%
|
||||
The show Survivor had the original premise of putting people on an island with Chuck Norris. There were no survivors, and nobody is brave enough to go to the island to retrieve the footage.
|
||||
%
|
||||
It takes Chuck Norris 20 minutes to watch 60 Minutes.
|
||||
|
|
@ -281,6 +284,7 @@ In a recent survey it was discovered the 94% of American women lost their virgin
|
|||
Chuck Norris invented a language that incorporates karate and roundhouse kicks. So next time Chuck Norris is kicking your ass, don't be offended or hurt, he may be just trying to tell you he likes your hat.
|
||||
%
|
||||
If at first you don't succeed, you're not Chuck Norris.
|
||||
%
|
||||
If Chuck Norris were a calendar, every month would be named Chucktober, and every day he'd kick your ass.
|
||||
%
|
||||
Fear is not the only emotion Chuck Norris can smell. He can also detect hope, as in "I hope I don't get a roundhouse kick from Chuck Norris."
|
||||
|
|
@ -349,7 +353,7 @@ As President Roosevelt said: "We have nothing to fear but fear itself. And Chuck
|
|||
%
|
||||
Chuck Norris just says "no" to drugs. If he said "yes", it would collapse Colombia's infrastructure.
|
||||
%
|
||||
Since 1940, the year Chuck Norris was born, roundhouse-kick related deaths have increased 13,000 percent.
|
||||
Since 1940, the year Chuck Norris was born, roundhouse-kick related deaths have increased 13,000 percent.?
|
||||
%
|
||||
Crime does not pay - unless you are an undertaker following Walker, Texas Ranger, on a routine patrol.
|
||||
%
|
||||
|
|
@ -497,7 +501,8 @@ When Chuck Norris works out on the Total Gym, the Total Gym feels like it's been
|
|||
%
|
||||
Chuck Norris can skeletize a cow in two minutes.
|
||||
%
|
||||
The only sure things are Death and Taxes?and when Chuck Norris goes to work for the IRS, they'll be the same thing.
|
||||
The only sure things are Death and Taxes, and when Chuck Norris goes to work for the IRS, they'll be the same thing.
|
||||
%
|
||||
Chuck Norris' first job was as a paperboy. There were no survivors.
|
||||
%
|
||||
With the rising cost of gasoline, Chuck Norris is beginning to worry about his drinking habit.
|
||||
|
|
@ -527,8 +532,6 @@ Chuck Norris uses 8'x10' sheets of plywood as toilet paper.
|
|||
Noah was the only man notified before Chuck Norris relieved himself in the Atlantic Ocean.
|
||||
%
|
||||
Chuck Norris once invited all of the other badasses from TV to duke it out in order to see who was the supreme badass. Only two showed up-- Jack Bauer and MacGyver.
|
||||
%
|
||||
|
||||
%
|
||||
MacGyver immediately tried to make a bomb out of some Q-Tips and Gatorade, but Chuck Norris roundhouse-kicked him in the solar plexus. MacGyver promptly threw up his own heart.
|
||||
%
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
## Coffeescript Plugin
|
||||
|
||||
This plugin provides aliases for quickly compiling and previewing your
|
||||
cofeescript code.
|
||||
coffeescript code.
|
||||
|
||||
When writing Coffeescript it's very common to want to preview the output of a
|
||||
certain snippet of code, either because you want to test the output or because
|
||||
|
|
@ -11,7 +11,7 @@ Preview the compiled result of your coffeescript with `cf "code"` as per the
|
|||
following:
|
||||
|
||||
```zsh
|
||||
$ cf 'if a then be else c'
|
||||
$ cf 'if a then b else c'
|
||||
if (a) {
|
||||
b;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ cf () {
|
|||
}
|
||||
# compile & copy to clipboard
|
||||
cfc () {
|
||||
cf "$1" | pbcopy
|
||||
cf "$1" | clipcopy
|
||||
}
|
||||
|
||||
# compile from pasteboard & print
|
||||
alias cfp='coffeeMe "$(pbpaste)"'
|
||||
# compile from clipboard & print
|
||||
alias cfp='cf "$(clippaste)"'
|
||||
|
||||
# compile from pasteboard and copy to clipboard
|
||||
alias cfpc='cfp | pbcopy'
|
||||
# compile from clipboard and copy to clipboard
|
||||
alias cfpc='cfp | clipcopy'
|
||||
|
|
|
|||
32
plugins/colored-man-pages/colored-man-pages.plugin.zsh
Normal file
32
plugins/colored-man-pages/colored-man-pages.plugin.zsh
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
if [[ "$OSTYPE" = solaris* ]]
|
||||
then
|
||||
if [[ ! -x "$HOME/bin/nroff" ]]
|
||||
then
|
||||
mkdir -p "$HOME/bin"
|
||||
cat > "$HOME/bin/nroff" <<EOF
|
||||
#!/bin/sh
|
||||
if [ -n "\$_NROFF_U" -a "\$1,\$2,\$3" = "-u0,-Tlp,-man" ]; then
|
||||
shift
|
||||
exec /usr/bin/nroff -u\$_NROFF_U "\$@"
|
||||
fi
|
||||
#-- Some other invocation of nroff
|
||||
exec /usr/bin/nroff "\$@"
|
||||
EOF
|
||||
chmod +x "$HOME/bin/nroff"
|
||||
fi
|
||||
fi
|
||||
|
||||
man() {
|
||||
env \
|
||||
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
|
||||
LESS_TERMCAP_md=$(printf "\e[1;31m") \
|
||||
LESS_TERMCAP_me=$(printf "\e[0m") \
|
||||
LESS_TERMCAP_se=$(printf "\e[0m") \
|
||||
LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
|
||||
LESS_TERMCAP_ue=$(printf "\e[0m") \
|
||||
LESS_TERMCAP_us=$(printf "\e[1;32m") \
|
||||
PAGER="${commands[less]:-$PAGER}" \
|
||||
_NROFF_U=1 \
|
||||
PATH="$HOME/bin:$PATH" \
|
||||
man "$@"
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
if [ "$OSTYPE[0,7]" = "solaris" ]
|
||||
then
|
||||
if [ ! -x ${HOME}/bin/nroff ]
|
||||
then
|
||||
mkdir -p ${HOME}/bin
|
||||
cat > ${HOME}/bin/nroff <<EOF
|
||||
#!/bin/sh
|
||||
if [ -n "\$_NROFF_U" -a "\$1,\$2,\$3" = "-u0,-Tlp,-man" ]; then
|
||||
shift
|
||||
exec /usr/bin/nroff -u\${_NROFF_U} "\$@"
|
||||
fi
|
||||
#-- Some other invocation of nroff
|
||||
exec /usr/bin/nroff "\$@"
|
||||
EOF
|
||||
chmod +x ${HOME}/bin/nroff
|
||||
fi
|
||||
fi
|
||||
|
||||
man() {
|
||||
env \
|
||||
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
|
||||
LESS_TERMCAP_md=$(printf "\e[1;31m") \
|
||||
LESS_TERMCAP_me=$(printf "\e[0m") \
|
||||
LESS_TERMCAP_se=$(printf "\e[0m") \
|
||||
LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
|
||||
LESS_TERMCAP_ue=$(printf "\e[0m") \
|
||||
LESS_TERMCAP_us=$(printf "\e[1;32m") \
|
||||
PAGER=/usr/bin/less \
|
||||
_NROFF_U=1 \
|
||||
PATH=${HOME}/bin:${PATH} \
|
||||
man "$@"
|
||||
}
|
||||
|
|
@ -23,3 +23,11 @@ if [ -f /usr/libexec/pk-command-not-found ]; then
|
|||
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
|
||||
|
|
|
|||
|
|
@ -52,19 +52,23 @@ alias mv='mv -i'
|
|||
|
||||
# zsh is able to auto-do some kungfoo
|
||||
# depends on the SUFFIX :)
|
||||
if [ ${ZSH_VERSION//\./} -ge 420 ]; then
|
||||
if is-at-least 4.2.0; then
|
||||
# open browser on urls
|
||||
_browser_fts=(htm html de org net com at cx nl se dk dk php)
|
||||
for ft in $_browser_fts ; do alias -s $ft=$BROWSER ; done
|
||||
if [[ -n "$BROWSER" ]]; then
|
||||
_browser_fts=(htm html de org net com at cx nl se dk)
|
||||
for ft in $_browser_fts; do alias -s $ft=$BROWSER; done
|
||||
fi
|
||||
|
||||
_editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex)
|
||||
for ft in $_editor_fts ; do alias -s $ft=$EDITOR ; done
|
||||
for ft in $_editor_fts; do alias -s $ft=$EDITOR; done
|
||||
|
||||
_image_fts=(jpg jpeg png gif mng tiff tif xpm)
|
||||
for ft in $_image_fts ; do alias -s $ft=$XIVIEWER; done
|
||||
if [[ -n "$XIVIEWER" ]]; then
|
||||
_image_fts=(jpg jpeg png gif mng tiff tif xpm)
|
||||
for ft in $_image_fts; do alias -s $ft=$XIVIEWER; done
|
||||
fi
|
||||
|
||||
_media_fts=(ape avi flv mkv mov mp3 mpeg mpg ogg ogm rm wav webm)
|
||||
for ft in $_media_fts ; do alias -s $ft=mplayer ; done
|
||||
_media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm)
|
||||
for ft in $_media_fts; do alias -s $ft=mplayer; done
|
||||
|
||||
#read documents
|
||||
alias -s pdf=acroread
|
||||
|
|
@ -83,4 +87,3 @@ fi
|
|||
|
||||
# Make zsh know about hosts already accessed by SSH
|
||||
zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })'
|
||||
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
|
||||
# Composer basic command completion
|
||||
_composer_get_command_list () {
|
||||
$_comp_command1 --no-ansi | sed "1,/Available commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }'
|
||||
$_comp_command1 --no-ansi 2>/dev/null | sed "1,/Available commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }'
|
||||
}
|
||||
|
||||
_composer_get_required_list () {
|
||||
$_comp_command1 show -s --no-ansi | sed '1,/requires/d' | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }'
|
||||
$_comp_command1 show -s --no-ansi 2>/dev/null | sed '1,/requires/d' | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }'
|
||||
}
|
||||
|
||||
_composer () {
|
||||
|
|
@ -39,14 +39,17 @@ alias c='composer'
|
|||
alias csu='composer self-update'
|
||||
alias cu='composer update'
|
||||
alias cr='composer require'
|
||||
alias crm='composer remove'
|
||||
alias ci='composer install'
|
||||
alias ccp='composer create-project'
|
||||
alias cdu='composer dump-autoload'
|
||||
alias cdo='composer dump-autoload --optimize-autoloader'
|
||||
alias cgu='composer global update'
|
||||
alias cgr='composer global require'
|
||||
alias cgrm='composer global remove'
|
||||
|
||||
# install composer in the current directory
|
||||
alias cget='curl -s https://getcomposer.org/installer | php'
|
||||
|
||||
# Add Composer's global binaries to PATH
|
||||
export PATH=$PATH:~/.composer/vendor/bin
|
||||
export PATH=$PATH:$(composer global config bin-dir --absolute) 2>/dev/null
|
||||
|
|
|
|||
11
plugins/copybuffer/README.md
Normal file
11
plugins/copybuffer/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# `copybuffer` plugin
|
||||
|
||||
This plugin binds the ctrl-o keyboard shortcut to a command that copies the text
|
||||
that is currently typed in the command line ($BUFFER) to the system clipboard.
|
||||
|
||||
This is useful if you type a command - and before you hit enter to execute it - want
|
||||
to copy it maybe so you can paste it into a script, gist or whatnot.
|
||||
|
||||
```zsh
|
||||
plugins=(... copybuffer)
|
||||
```
|
||||
14
plugins/copybuffer/copybuffer.plugin.zsh
Normal file
14
plugins/copybuffer/copybuffer.plugin.zsh
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# copy the active line from the command line buffer
|
||||
# onto the system clipboard (requires clipcopy plugin)
|
||||
|
||||
copybuffer () {
|
||||
if which clipcopy &>/dev/null; then
|
||||
echo $BUFFER | clipcopy
|
||||
else
|
||||
echo "clipcopy function not found. Please make sure you have Oh My Zsh installed correctly."
|
||||
fi
|
||||
}
|
||||
|
||||
zle -N copybuffer
|
||||
|
||||
bindkey "^O" copybuffer
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
# Copies the pathname of the current directory to the system or X Windows clipboard
|
||||
function copydir {
|
||||
pwd | tr -d "\r\n" | pbcopy
|
||||
}
|
||||
emulate -L zsh
|
||||
print -n $PWD | clipcopy
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Copies the contents of a given file to the system or X Windows clipboard
|
||||
#
|
||||
# copyfile <file>
|
||||
function copyfile {
|
||||
[[ "$#" != 1 ]] && return 1
|
||||
local file_to_copy=$1
|
||||
cat $file_to_copy | pbcopy
|
||||
emulate -L zsh
|
||||
clipcopy $1
|
||||
}
|
||||
|
|
|
|||
32
plugins/cp/README.md
Normal file
32
plugins/cp/README.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# cp plugin
|
||||
|
||||
This plugin defines a `cpv` function that uses `rsync` so that you
|
||||
get the features and security of this command.
|
||||
|
||||
To enable, add `cp` to your `plugins` array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... cp)
|
||||
```
|
||||
|
||||
## Description
|
||||
|
||||
The enabled options for rsync are:
|
||||
|
||||
- `-p`: preserves permissions.
|
||||
|
||||
- `-o`: preserves owner.
|
||||
|
||||
* `-g`: preserves group.
|
||||
|
||||
* `-b`: make a backup of the original file instead of overwriting it, if it exists.
|
||||
|
||||
* `-r`: recurse directories.
|
||||
|
||||
* `-hhh`: outputs numbers in human-readable format, in units of 1024 (K, M, G, T).
|
||||
|
||||
* `--backup-dir=/tmp/rsync`: move backup copies to "/tmp/rsync".
|
||||
|
||||
* `-e /dev/null`: only work on local files (disable remote shells).
|
||||
|
||||
* `--progress`: display progress.
|
||||
|
|
@ -1,14 +1,4 @@
|
|||
#Show progress while file is copying
|
||||
|
||||
# Rsync options are:
|
||||
# -p - preserve permissions
|
||||
# -o - preserve owner
|
||||
# -g - preserve group
|
||||
# -h - output in human-readable format
|
||||
# --progress - display progress
|
||||
# -b - instead of just overwriting an existing file, save the original
|
||||
# --backup-dir=/tmp/rsync - move backup copies to "/tmp/rsync"
|
||||
# -e /dev/null - only work on local files
|
||||
# -- - everything after this is an argument, even if it looks like an option
|
||||
|
||||
alias cpv="rsync -poghb --backup-dir=/tmp/rsync -e /dev/null --progress --"
|
||||
cpv() {
|
||||
rsync -pogbr -hhh --backup-dir=/tmp/rsync -e /dev/null --progress "$@"
|
||||
}
|
||||
compdef _files cpv
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ apt-history () {
|
|||
awk '{print $4"="$5}'
|
||||
;;
|
||||
list)
|
||||
zcat $(ls -rt /var/log/dpkg*)
|
||||
zgrep --no-filename '' $(ls -rt /var/log/dpkg*)
|
||||
;;
|
||||
*)
|
||||
echo "Parameters:"
|
||||
|
|
|
|||
|
|
@ -8,11 +8,23 @@
|
|||
# pushd +N: start counting from left of `dirs' output
|
||||
# pushd -N: start counting from right of `dirs' output
|
||||
|
||||
switch-to-dir () {
|
||||
[[ ${#dirstack} -eq 0 ]] && return
|
||||
|
||||
while ! builtin pushd -q $1 &>/dev/null; do
|
||||
# We found a missing directory: pop it out of the dir stack
|
||||
builtin popd -q $1
|
||||
|
||||
# Stop trying if there are no more directories in the dir stack
|
||||
[[ ${#dirstack} -eq 0 ]] && break
|
||||
done
|
||||
}
|
||||
|
||||
insert-cycledleft () {
|
||||
emulate -L zsh
|
||||
setopt nopushdminus
|
||||
|
||||
builtin pushd -q +1 &>/dev/null || true
|
||||
switch-to-dir +1
|
||||
zle reset-prompt
|
||||
}
|
||||
zle -N insert-cycledleft
|
||||
|
|
@ -21,17 +33,17 @@ insert-cycledright () {
|
|||
emulate -L zsh
|
||||
setopt nopushdminus
|
||||
|
||||
builtin pushd -q -0 &>/dev/null || true
|
||||
switch-to-dir -0
|
||||
zle reset-prompt
|
||||
}
|
||||
zle -N insert-cycledright
|
||||
|
||||
|
||||
# add key bindings for iTerm2
|
||||
if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
|
||||
bindkey "^[[1;6D" insert-cycledleft
|
||||
bindkey "^[[1;6C" insert-cycledright
|
||||
else
|
||||
bindkey "\e[1;6D" insert-cycledleft
|
||||
bindkey "\e[1;6C" insert-cycledright
|
||||
fi
|
||||
# These sequences work for xterm, Apple Terminal.app, and probably others.
|
||||
# Not for rxvt-unicode, but it doesn't seem differentiate Ctrl-Shift-Arrow
|
||||
# from plain Shift-Arrow, at least by default.
|
||||
# iTerm2 does not have these key combinations defined by default; you will need
|
||||
# to add them under "Keys" in your profile if you want to use this. You can do
|
||||
# this conveniently by loading the "xterm with Numeric Keypad" preset.
|
||||
bindkey "\e[1;6D" insert-cycledleft
|
||||
bindkey "\e[1;6C" insert-cycledright
|
||||
|
|
|
|||
25
plugins/dnf/README.md
Executable file
25
plugins/dnf/README.md
Executable file
|
|
@ -0,0 +1,25 @@
|
|||
## Description
|
||||
|
||||
This plugin makes `dnf` usage easier by adding aliases for the most
|
||||
common commands.
|
||||
|
||||
`dnf` is the new package manager for RPM-based distributions, which
|
||||
replaces `yum`.
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Command | Description |
|
||||
|-------|-------------------------|--------------------------|
|
||||
| dnfl | `dnf list` | List packages |
|
||||
| dnfli | `dnf list installed` | List installed packages |
|
||||
| dnfgl | `dnf grouplist` | List package groups |
|
||||
| dnfmc | `dnf makecache` | Generate metadata cache |
|
||||
| dnfp | `dnf info` | Show package information |
|
||||
| dnfs | `dnf search` | Search package |
|
||||
| **Use `sudo`** |
|
||||
| dnfu | `sudo dnf upgrade` | Upgrade package |
|
||||
| dnfi | `sudo dnf install` | Install package |
|
||||
| dnfgi | `sudo dnf groupinstall` | Install package group |
|
||||
| dnfr | `sudo dnf remove` | Remove package |
|
||||
| dnfgr | `sudo dnf groupremove` | Remove package group |
|
||||
| dnfc | `sudo dnf clean all` | Clean cache |
|
||||
15
plugins/dnf/dnf.plugin.zsh
Normal file
15
plugins/dnf/dnf.plugin.zsh
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
## Aliases
|
||||
|
||||
alias dnfl="dnf list" # List packages
|
||||
alias dnfli="dnf list installed" # List installed packages
|
||||
alias dnfgl="dnf grouplist" # List package groups
|
||||
alias dnfmc="dnf makecache" # Generate metadata cache
|
||||
alias dnfp="dnf info" # Show package information
|
||||
alias dnfs="dnf search" # Search package
|
||||
|
||||
alias dnfu="sudo dnf upgrade" # Upgrade package
|
||||
alias dnfi="sudo dnf install" # Install package
|
||||
alias dnfgi="sudo dnf groupinstall" # Install package group
|
||||
alias dnfr="sudo dnf remove" # Remove package
|
||||
alias dnfgr="sudo dnf groupremove" # Remove package group
|
||||
alias dnfc="sudo dnf clean all" # Clean cache
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
# Docker-compose plugin for oh my zsh
|
||||
|
||||
A copy of the completion script from the [docker-compose](1) git repo.
|
||||
A copy of the completion script from the [docker-compose](https://github.com/docker/compose/blob/master/contrib/completion/zsh/_docker-compose) git repo.
|
||||
|
||||
[1]:[https://github.com/docker/compose/blob/master/contrib/completion/zsh/_docker-compose]
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
# -------------------------------------------------------------------------
|
||||
# Version
|
||||
# -------
|
||||
# 0.1.0
|
||||
# 1.5.0
|
||||
# -------------------------------------------------------------------------
|
||||
# Authors
|
||||
# -------
|
||||
|
|
@ -19,58 +19,69 @@
|
|||
# * @felixr docker zsh completion script : https://github.com/felixr/docker-zsh-completion
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
# For compatibility reasons, Compose and therefore its completion supports several
|
||||
# stack compositon files as listed here, in descending priority.
|
||||
# Support for these filenames might be dropped in some future version.
|
||||
__docker-compose_compose_file() {
|
||||
local file
|
||||
for file in docker-compose.y{,a}ml fig.y{,a}ml ; do
|
||||
[ -e $file ] && {
|
||||
echo $file
|
||||
return
|
||||
}
|
||||
done
|
||||
echo docker-compose.yml
|
||||
__docker-compose_q() {
|
||||
docker-compose 2>/dev/null $compose_options "$@"
|
||||
}
|
||||
|
||||
# Extracts all service names from docker-compose.yml.
|
||||
___docker-compose_all_services_in_compose_file() {
|
||||
# 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 " " "|")
|
||||
awk -F: '/^[a-zA-Z0-9]/{print $1}' "${compose_file:-$(__docker-compose_compose_file)}" 2>/dev/null | grep -Ev "$already_selected"
|
||||
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() {
|
||||
services=$(___docker-compose_all_services_in_compose_file)
|
||||
_alternative "args:services:($services)"
|
||||
[[ $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() {
|
||||
__docker-compose_services_with_key() {
|
||||
local already_selected
|
||||
local -a buildable
|
||||
already_selected=$(echo ${words[@]} | tr " " "|")
|
||||
already_selected=$(echo $words | tr " " "|")
|
||||
# flatten sections to one line, then filter lines containing the key and return section name.
|
||||
awk '/^[a-zA-Z0-9]/{printf "\n"};{printf $0;next;}' "${compose_file:-$(__docker-compose_compose_file)}" 2>/dev/null | awk -F: -v key=": +$1:" '$0 ~ key {print $1}' 2>/dev/null | grep -Ev "$already_selected"
|
||||
__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() {
|
||||
buildable=$(___docker-compose_services_with_key build)
|
||||
_alternative "args:buildable services:($buildable)"
|
||||
[[ $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() {
|
||||
pullable=$(___docker-compose_services_with_key image)
|
||||
_alternative "args:pullable services:($pullable)"
|
||||
[[ $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() {
|
||||
local kind expl
|
||||
declare -a running stopped lines args 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
|
||||
|
|
@ -80,64 +91,78 @@ __docker-compose_get_services() {
|
|||
|
||||
kind=$1
|
||||
shift
|
||||
[[ $kind = (stopped|all) ]] && args=($args -a)
|
||||
[[ $kind =~ (stopped|all) ]] && args=($args -a)
|
||||
|
||||
lines=(${(f)"$(_call_program commands docker ps ${args})"})
|
||||
services=(${(f)"$(_call_program commands docker-compose 2>/dev/null ${compose_file:+-f $compose_file} ${compose_project:+-p $compose_project} ps -q)"})
|
||||
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 )) {
|
||||
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
|
||||
}
|
||||
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
|
||||
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]]}/:/\\:}%% ##}"
|
||||
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
|
||||
[[ $kind = (stopped|all) ]] && _describe -t services-stopped "stopped services" stopped
|
||||
[[ $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 () {
|
||||
__docker-compose_services() {
|
||||
[[ $PREFIX = -* ]] && return 1
|
||||
__docker-compose_get_services all "$@"
|
||||
}
|
||||
|
||||
__docker-compose_caching_policy() {
|
||||
oldp=( "$1"(Nmh+1) ) # 1 hour
|
||||
oldp=( "$1"(Nmh+1) ) # 1 hour
|
||||
(( $#oldp ))
|
||||
}
|
||||
|
||||
__docker-compose_commands () {
|
||||
__docker-compose_commands() {
|
||||
local cache_policy
|
||||
|
||||
zstyle -s ":completion:${curcontext}:" cache-policy cache_policy
|
||||
|
|
@ -151,110 +176,204 @@ __docker-compose_commands () {
|
|||
local -a lines
|
||||
lines=(${(f)"$(_call_program commands docker-compose 2>&1)"})
|
||||
_docker_compose_subcommands=(${${${lines[$((${lines[(i)Commands:]} + 1)),${lines[(I) *]}]}## #}/ ##/:})
|
||||
_store_cache docker_compose_subcommands _docker_compose_subcommands
|
||||
(( $#_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 -a _command_args
|
||||
__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 \
|
||||
'--no-cache[Do not use cache when building the image]' \
|
||||
$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 \
|
||||
'--no-color[Produce monochrome output.]' \
|
||||
$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
|
||||
;;
|
||||
(migrate-to-labels)
|
||||
(pause)
|
||||
_arguments \
|
||||
'(-):Recreate containers to add labels' && ret=0
|
||||
$opts_help \
|
||||
'*:running services:__docker-compose_runningservices' && ret=0
|
||||
;;
|
||||
(port)
|
||||
_arguments \
|
||||
'--protocol=-[tcp or udap (defaults to tcp)]:protocol:(tcp udp)' \
|
||||
'--index=-[index of the container if there are mutiple instances of a service (defaults to 1)]:index: ' \
|
||||
$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 \
|
||||
'--allow-insecure-ssl[Allow insecure connections to the docker registry]' \
|
||||
$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 volumes associated with containers]' \
|
||||
'-v[Remove any anonymous volumes attached to containers]' \
|
||||
'*:stopped services:__docker-compose_stoppedservices' && ret=0
|
||||
;;
|
||||
(run)
|
||||
_arguments \
|
||||
'--allow-insecure-ssl[Allow insecure connections to the docker registry]' \
|
||||
$opts_help \
|
||||
'-d[Detached mode: Run container in the background, print new container name.]' \
|
||||
'--entrypoint[Overwrite the entrypoint of the image.]:entry point: ' \
|
||||
'*-e[KEY=VAL Set an environment variable (can be used multiple times)]:environment variable KEY=VAL: ' \
|
||||
'(-u --user)'{-u,--user=-}'[Run as specified username or uid]:username or uid:_users' \
|
||||
"--no-deps[Don't start linked services.]" \
|
||||
'--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 '*:running services:__docker-compose_runningservices' && ret=0
|
||||
_arguments \
|
||||
$opts_help \
|
||||
$opts_timeout \
|
||||
'*:running services:__docker-compose_runningservices' && ret=0
|
||||
;;
|
||||
(start)
|
||||
_arguments '*:stopped services:__docker-compose_stoppedservices' && ret=0
|
||||
_arguments \
|
||||
$opts_help \
|
||||
'*:stopped services:__docker-compose_stoppedservices' && ret=0
|
||||
;;
|
||||
(stop|restart)
|
||||
_arguments \
|
||||
'(-t --timeout)'{-t,--timeout}"[Specify a shutdown timeout in seconds. (default: 10)]:seconds: " \
|
||||
$opts_help \
|
||||
$opts_timeout \
|
||||
'*:running services:__docker-compose_runningservices' && ret=0
|
||||
;;
|
||||
(unpause)
|
||||
_arguments \
|
||||
$opts_help \
|
||||
'*:paused services:__docker-compose_pausedservices' && ret=0
|
||||
;;
|
||||
(up)
|
||||
_arguments \
|
||||
'--allow-insecure-ssl[Allow insecure connections to the docker registry]' \
|
||||
'-d[Detached mode: Run containers in the background, print new container names.]' \
|
||||
'--no-color[Produce monochrome output.]' \
|
||||
"--no-deps[Don't start linked services.]" \
|
||||
"--no-recreate[If containers already exist, don't recreate them.]" \
|
||||
"--no-build[Don't build an image, even if it's missing]" \
|
||||
'(-t --timeout)'{-t,--timeout}"[Specify a shutdown timeout in seconds. (default: 10)]:seconds: " \
|
||||
"--x-smart-recreate[Only recreate containers whose configuration or image needs to be updated. (EXPERIMENTAL)]" \
|
||||
$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'
|
||||
_message 'Unknown sub command' && ret=1
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
_docker-compose () {
|
||||
_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
|
||||
|
|
@ -262,34 +381,62 @@ _docker-compose () {
|
|||
return
|
||||
fi
|
||||
|
||||
local curcontext="$curcontext" state line ret=1
|
||||
local curcontext="$curcontext" state line
|
||||
integer ret=1
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C \
|
||||
'(- :)'{-h,--help}'[Get help]' \
|
||||
'--verbose[Show more output]' \
|
||||
'(- :)'{-v,--version}'[Print version and exit]' \
|
||||
'(-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 counter=1
|
||||
#local compose_file compose_project
|
||||
while [ $counter -lt ${#words[@]} ]; do
|
||||
case "${words[$counter]}" in
|
||||
-f|--file)
|
||||
(( counter++ ))
|
||||
compose_file="${words[$counter]}"
|
||||
;;
|
||||
-p|--project-name)
|
||||
(( counter++ ))
|
||||
compose_project="${words[$counter]}"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
(( counter++ ))
|
||||
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
|
||||
|
|
|
|||
23
plugins/docker-compose/docker-compose.plugin.zsh
Normal file
23
plugins/docker-compose/docker-compose.plugin.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'
|
||||
|
|
@ -1,19 +1,5 @@
|
|||
## Docker autocomplete plugin
|
||||
|
||||
- Adds autocomplete options for all docker commands.
|
||||
- Will also show containerIDs and Image names where applicable
|
||||
|
||||
####Shows help for all commands
|
||||

|
||||
|
||||
|
||||
####Shows your downloaded images where applicable
|
||||

|
||||
|
||||
|
||||
####Shows your running containers where applicable
|
||||

|
||||
|
||||
|
||||
|
||||
Maintainer : Ahmed Azaan ([@aeonazaan](https://twitter.com/aeonazaan))
|
||||
A copy of the completion script from the
|
||||
[docker](https://github.com/docker/docker/tree/master/contrib/completion/zsh)
|
||||
git repo.
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
34
plugins/dotenv/README.md
Normal file
34
plugins/dotenv/README.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# dotenv
|
||||
|
||||
Automatically load your project ENV variables from `.env` file when you `cd` into project root directory.
|
||||
|
||||
Storing configuration in the environment is one of the tenets of a [twelve-factor app](http://www.12factor.net). Anything that is likely to change between deployment environments–such as resource handles for databases or credentials for external services–should be extracted from the code into environment variables.
|
||||
|
||||
## Installation
|
||||
|
||||
Just add the plugin to your `.zshrc`:
|
||||
|
||||
```sh
|
||||
plugins=(git man dotenv)
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Create `.env` file inside your project directory and put your local ENV variables there.
|
||||
|
||||
For example:
|
||||
```sh
|
||||
export AWS_S3_TOKEN=d84a83539134f28f412c652b09f9f98eff96c9a
|
||||
export SECRET_KEY=7c6c72d959416d5aa368a409362ec6e2ac90d7f
|
||||
export MONGO_URI=mongodb://127.0.0.1:27017
|
||||
export PORT=3001
|
||||
```
|
||||
`export` is optional. This format works as well:
|
||||
```sh
|
||||
AWS_S3_TOKEN=d84a83539134f28f412c652b09f9f98eff96c9a
|
||||
SECRET_KEY=7c6c72d959416d5aa368a409362ec6e2ac90d7f
|
||||
MONGO_URI=mongodb://127.0.0.1:27017
|
||||
PORT=3001
|
||||
```
|
||||
|
||||
**It's strongly recommended to add `.env` file to `.gitignore`**, because usually it contains sensitive information such as your credentials, secret keys, passwords etc. You don't want to commit this file, it supposed to be local only.
|
||||
10
plugins/dotenv/dotenv.plugin.zsh
Normal file
10
plugins/dotenv/dotenv.plugin.zsh
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/zsh
|
||||
|
||||
source_env() {
|
||||
if [[ -f .env ]]; then
|
||||
source .env
|
||||
fi
|
||||
}
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook chpwd source_env
|
||||
19
plugins/droplr/README.md
Normal file
19
plugins/droplr/README.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# droplr
|
||||
|
||||
Use [Droplr](https://droplr.com/) from the command line to upload files and shorten
|
||||
links. It needs to have [Droplr.app](https://droplr.com/apps) installed and logged
|
||||
in. MacOS only.
|
||||
|
||||
To use it, add `droplr` to the `$plugins` variable in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... droplr)
|
||||
```
|
||||
|
||||
Author: [Fabio Fernandes](https://github.com/fabiofl)
|
||||
|
||||
## Examples
|
||||
|
||||
- Upload a file: `droplr ./path/to/file/`
|
||||
|
||||
- Shorten a link: `droplr http://example.com`
|
||||
15
plugins/droplr/droplr.plugin.zsh
Normal file
15
plugins/droplr/droplr.plugin.zsh
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Only compatible with MacOS
|
||||
[[ "$OSTYPE" == darwin* ]] || return
|
||||
|
||||
droplr() {
|
||||
if [[ $# -eq 0 ]]; then
|
||||
echo You need to specify a parameter. >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ "$1" =~ ^https?:// ]]; then
|
||||
osascript -e 'tell app "Droplr" to shorten "'"$1"'"'
|
||||
else
|
||||
open -ga /Applications/Droplr.app "$1"
|
||||
fi
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
# - Configuration changes made at runtime are applied to all frames.
|
||||
|
||||
|
||||
if "$ZSH/tools/require_tool.sh" emacs 23 2>/dev/null ; then
|
||||
if "$ZSH/tools/require_tool.sh" emacs 24 2>/dev/null ; then
|
||||
export EMACS_PLUGIN_LAUNCHER="$ZSH/plugins/emacs/emacsclient.sh"
|
||||
|
||||
# set EDITOR if not already defined.
|
||||
|
|
@ -18,15 +18,14 @@ if "$ZSH/tools/require_tool.sh" emacs 23 2>/dev/null ; then
|
|||
|
||||
alias emacs="$EMACS_PLUGIN_LAUNCHER --no-wait"
|
||||
alias e=emacs
|
||||
# open terminal emacsclient
|
||||
alias te="$EMACS_PLUGIN_LAUNCHER -nw"
|
||||
|
||||
# same than M-x eval but from outside Emacs.
|
||||
alias eeval="$EMACS_PLUGIN_LAUNCHER --eval"
|
||||
# create a new X frame
|
||||
alias eframe='emacsclient --alternate-editor "" --create-frame'
|
||||
|
||||
# to code all night long
|
||||
alias emasc=emacs
|
||||
alias emcas=emacs
|
||||
|
||||
# Write to standard output the path to the file
|
||||
# opened in the current buffer.
|
||||
|
|
|
|||
|
|
@ -1,12 +1,28 @@
|
|||
#!/bin/sh
|
||||
|
||||
# get list of available X windows.
|
||||
x=`emacsclient --alternate-editor '' --eval '(x-display-list)' 2>/dev/null`
|
||||
_emacsfun()
|
||||
{
|
||||
# get list of emacs frames.
|
||||
frameslist=`emacsclient --alternate-editor '' --eval '(frame-list)' 2>/dev/null | egrep -o '(frame)+'`
|
||||
|
||||
if [ -z "$x" ] || [ "$x" = "nil" ] ;then
|
||||
# Create one if there is no X window yet.
|
||||
emacsclient --alternate-editor "" --create-frame "$@"
|
||||
if [ "$(echo "$frameslist" | sed -n '$=')" -ge 2 ] ;then
|
||||
# prevent creating another X frame if there is at least one present.
|
||||
emacsclient --alternate-editor "" "$@"
|
||||
else
|
||||
# Create one if there is no X window yet.
|
||||
emacsclient --alternate-editor "" --create-frame "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# adopted from https://github.com/davidshepherd7/emacs-read-stdin/blob/master/emacs-read-stdin.sh
|
||||
# If the second argument is - then write stdin to a tempfile and open the
|
||||
# tempfile. (first argument will be `--no-wait` passed in by the plugin.zsh)
|
||||
if [ "$#" -ge "2" -a "$2" = "-" ]
|
||||
then
|
||||
tempfile="$(mktemp emacs-stdin-$USER.XXXXXXX --tmpdir)"
|
||||
cat - > "$tempfile"
|
||||
_emacsfun --no-wait $tempfile
|
||||
else
|
||||
# prevent creating another X frame if there is at least one present.
|
||||
emacsclient --alternate-editor "" "$@"
|
||||
_emacsfun "$@"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -6,14 +6,16 @@ Ember CLI (http://www.ember-cli.com/)
|
|||
|
||||
### List of Aliases
|
||||
|
||||
alias es='ember serve'
|
||||
alias ea='ember addon'
|
||||
alias eb='ember build'
|
||||
alias ed='ember destroy'
|
||||
alias eg='ember generate'
|
||||
alias eh='ember help'
|
||||
alias ein='ember init'
|
||||
alias ei='ember install'
|
||||
alias et='ember test'
|
||||
alias eu='ember update'
|
||||
alias ev='ember version'
|
||||
Alias | Ember-CLI command
|
||||
----- | -----------------
|
||||
**es** | *ember serve*
|
||||
**ea** | *ember addon*
|
||||
**eb** | *ember build*
|
||||
**ed** | *ember destroy*
|
||||
**eg** | *ember generate*
|
||||
**eh** | *ember help*
|
||||
**ein** | *ember init*
|
||||
**ei** | *ember install*
|
||||
**et** | *ember test*
|
||||
**eu** | *ember update*
|
||||
**ev** | *ember version*
|
||||
|
|
|
|||
|
|
@ -1,4 +1,17 @@
|
|||
encode64(){ echo -n $1 | base64 }
|
||||
decode64(){ echo -n $1 | base64 --decode }
|
||||
encode64() {
|
||||
if [[ $# -eq 0 ]]; then
|
||||
cat | base64
|
||||
else
|
||||
printf '%s' $1 | base64
|
||||
fi
|
||||
}
|
||||
|
||||
decode64() {
|
||||
if [[ $# -eq 0 ]]; then
|
||||
cat | base64 --decode
|
||||
else
|
||||
printf '%s' $1 | base64 --decode
|
||||
fi
|
||||
}
|
||||
alias e64=encode64
|
||||
alias d64=decode64
|
||||
|
|
|
|||
46
plugins/extract/README.md
Normal file
46
plugins/extract/README.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# extract plugin
|
||||
|
||||
This plugin defines a function called `extract` that extracts the archive file
|
||||
you pass it, and it supports a wide variety of archive filetypes.
|
||||
|
||||
This way you don't have to know what specific command extracts a file, you just
|
||||
do `extract <filename>` and the function takes care of the rest.
|
||||
|
||||
To use it, add `extract` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... extract)
|
||||
```
|
||||
|
||||
## Supported file extensions
|
||||
|
||||
| Extension | Description |
|
||||
|:------------------|:-------------------------------------|
|
||||
| `7z` | 7zip file |
|
||||
| `Z` | Z archive (LZW) |
|
||||
| `apk` | Android app file |
|
||||
| `bz2` | Bzip2 file |
|
||||
| `deb` | Debian package |
|
||||
| `gz` | Gzip file |
|
||||
| `ipsw` | iOS firmware file |
|
||||
| `jar` | Java Archive |
|
||||
| `lzma` | LZMA archive |
|
||||
| `rar` | WinRAR archive |
|
||||
| `sublime-package` | Sublime Text package |
|
||||
| `tar` | Tarball |
|
||||
| `tar.bz2` | Tarball with bzip2 compression |
|
||||
| `tar.gz` | Tarball with gzip compression |
|
||||
| `tar.xz` | Tarball with lzma2 compression |
|
||||
| `tar.zma` | Tarball with lzma compression |
|
||||
| `tbz` | Tarball with bzip compression |
|
||||
| `tbz2` | Tarball with bzip2 compression |
|
||||
| `tgz` | Tarball with gzip compression |
|
||||
| `tlz` | Tarball with lzma compression |
|
||||
| `txz` | Tarball with lzma2 compression |
|
||||
| `war` | Web Application archive (Java-based) |
|
||||
| `xpi` | Mozilla XPI module file |
|
||||
| `xz` | LZMA2 archive |
|
||||
| `zip` | Zip archive |
|
||||
|
||||
See [list of archive formats](https://en.wikipedia.org/wiki/List_of_archive_formats) for
|
||||
more information regarding archive formats.
|
||||
|
|
@ -3,6 +3,5 @@
|
|||
|
||||
_arguments \
|
||||
'(-r --remove)'{-r,--remove}'[Remove archive.]' \
|
||||
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|ipsw|rar|7z|deb)(-.)'" && return 0
|
||||
|
||||
|
||||
"*::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
|
||||
|
|
|
|||
|
|
@ -1,80 +1,71 @@
|
|||
# ------------------------------------------------------------------------------
|
||||
# FILE: extract.plugin.zsh
|
||||
# DESCRIPTION: oh-my-zsh plugin file.
|
||||
# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
|
||||
# VERSION: 1.0.1
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
function extract() {
|
||||
local remove_archive
|
||||
local success
|
||||
local file_name
|
||||
local extract_dir
|
||||
|
||||
if (( $# == 0 )); then
|
||||
echo "Usage: extract [-option] [file ...]"
|
||||
echo
|
||||
echo Options:
|
||||
echo " -r, --remove Remove archive."
|
||||
echo
|
||||
echo "Report bugs to <sorin.ionescu@gmail.com>."
|
||||
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" 1>&2
|
||||
shift
|
||||
continue
|
||||
fi
|
||||
|
||||
success=0
|
||||
file_name="$( basename "$1" )"
|
||||
extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
|
||||
case "$1" in
|
||||
(*.tar.gz|*.tgz) [ -z $commands[pigz] ] && tar zxvf "$1" || pigz -dc "$1" | tar xv ;;
|
||||
(*.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) [ -z $commands[pigz] ] && gunzip "$1" || pigz -d "$1" ;;
|
||||
(*.bz2) bunzip2 "$1" ;;
|
||||
(*.xz) unxz "$1" ;;
|
||||
(*.lzma) unlzma "$1" ;;
|
||||
(*.Z) uncompress "$1" ;;
|
||||
(*.zip|*.war|*.jar|*.sublime-package|*.ipsw) 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; tar xzvf ../data.tar.gz
|
||||
cd ..; rm *.tar.gz debian-binary
|
||||
cd ..
|
||||
;;
|
||||
(*)
|
||||
echo "extract: '$1' cannot be extracted" 1>&2
|
||||
success=1
|
||||
;;
|
||||
esac
|
||||
|
||||
(( success = $success > 0 ? $success : $? ))
|
||||
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@ if [ $commands[fasd] ]; then # check if fasd is installed
|
|||
source "$fasd_cache"
|
||||
unset fasd_cache
|
||||
|
||||
alias v='f -e vim'
|
||||
alias v="f -e $EDITOR"
|
||||
alias o='a -e open_command'
|
||||
fi
|
||||
|
|
|
|||
17
plugins/firewalld/firewalld.plugin.zsh
Normal file
17
plugins/firewalld/firewalld.plugin.zsh
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
alias fw="sudo firewall-cmd"
|
||||
alias fwp="sudo firewall-cmd --permanent"
|
||||
alias fwr="sudo firewall-cmd --reload"
|
||||
alias fwrp="sudo firewall-cmd --runtime-to-permanent"
|
||||
|
||||
function fwl () {
|
||||
# converts output to zsh array ()
|
||||
# @f flag split on new line
|
||||
zones=("${(@f)$(sudo firewall-cmd --get-active-zones | grep -v interfaces)}")
|
||||
|
||||
for i in $zones; do
|
||||
sudo firewall-cmd --zone $i --list-all
|
||||
done
|
||||
|
||||
echo 'Direct Rules:'
|
||||
sudo firewall-cmd --direct --get-all-rules
|
||||
}
|
||||
22
plugins/firewalld/readme.md
Normal file
22
plugins/firewalld/readme.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# FirewallD Plugin
|
||||
|
||||
This plugin adds some aliases and functions for FirewallD using the `firewalld-cmd` command. To use it, add firewalld to your plugins array.
|
||||
|
||||
```zsh
|
||||
plugins=(... firewalld)
|
||||
```
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Command | Description |
|
||||
| :---- | :----------------------------------------- | :--------------------------- |
|
||||
| fw | `sudo firewall-cmd` | Shorthand |
|
||||
| fwr | `sudo firewall-cmd --reload` | Reload current configuration |
|
||||
| fwp | `sudo firewall-cmd --permanent` | Create permanent rule |
|
||||
| fwrp | `sudo firewall-cmd --runtime-to-permanent` | Save current configuration |
|
||||
|
||||
## Functions
|
||||
|
||||
| Function | Description |
|
||||
| :------- | :--------------------------------------------------------- |
|
||||
| fwl | Lists configuration from all active zones and direct rules |
|
||||
|
|
@ -4,10 +4,12 @@ Plugin for ForkLift, an FTP application for OS X.
|
|||
|
||||
### Requirements
|
||||
|
||||
* [ForkLift](http://forkliftapp.com/forklift/)
|
||||
* [ForkLift](http://www.binarynights.com/forklift/)
|
||||
|
||||
### Usage
|
||||
|
||||
* If `fl` is called without arguments then the current folder is opened in ForkLift. Is equivalent to `fl .`
|
||||
<code>fl [*file_or_folder*]</code>
|
||||
|
||||
* If `fl` is called with a directory as the argument, then that directory is opened in ForkLift
|
||||
* If `fl` is called without arguments then the current folder is opened in ForkLift. This is equivalent to `fl .`.
|
||||
|
||||
* If `fl` is called with a directory as the argument, then that directory is opened in ForkLift. If called with a non-directory file as the argument, then the file's parent directory is opened.
|
||||
|
|
|
|||
7
plugins/fossil/README.md
Normal file
7
plugins/fossil/README.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
## Fossil Plugin
|
||||
|
||||
This plugin adds completion support and prompt for fossil repositories.
|
||||
The prompt will display the current branch and status been dirty or clean.
|
||||
|
||||
### CONTRIBUTOR
|
||||
- Jefferson González ([jgmdev](https://github.com/jgmdev))
|
||||
89
plugins/fossil/fossil.plugin.zsh
Normal file
89
plugins/fossil/fossil.plugin.zsh
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
_FOSSIL_PROMPT=""
|
||||
|
||||
# Prefix at the very beginning of the prompt, before the branch name
|
||||
ZSH_THEME_FOSSIL_PROMPT_PREFIX="%{$fg_bold[blue]%}fossil:(%{$fg_bold[red]%}"
|
||||
|
||||
# At the very end of the prompt
|
||||
ZSH_THEME_FOSSIL_PROMPT_SUFFIX="%{$fg_bold[blue]%})"
|
||||
|
||||
# Text to display if the branch is dirty
|
||||
ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖"
|
||||
|
||||
# Text to display if the branch is clean
|
||||
ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔"
|
||||
|
||||
function fossil_prompt_info () {
|
||||
local _OUTPUT=`fossil branch 2>&1`
|
||||
local _STATUS=`echo $_OUTPUT | grep "use --repo"`
|
||||
if [ "$_STATUS" = "" ]; then
|
||||
local _EDITED=`fossil changes`
|
||||
local _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
|
||||
local _BRANCH=`echo $_OUTPUT | grep "* " | sed 's/* //g'`
|
||||
|
||||
if [ "$_EDITED" != "" ]; then
|
||||
_EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
|
||||
fi
|
||||
|
||||
echo "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
|
||||
"$_BRANCH" \
|
||||
"$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
|
||||
"$_EDITED_SYM"\
|
||||
"%{$reset_color%}"
|
||||
fi
|
||||
}
|
||||
|
||||
function _fossil_get_command_list () {
|
||||
fossil help -a | grep -v "Usage|Common|This is"
|
||||
}
|
||||
|
||||
function _fossil () {
|
||||
local context state state_descr line
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments \
|
||||
'1: :->command'\
|
||||
'2: :->subcommand'
|
||||
|
||||
case $state in
|
||||
command)
|
||||
local _OUTPUT=`fossil branch 2>&1 | grep "use --repo"`
|
||||
if [ "$_OUTPUT" = "" ]; then
|
||||
compadd `_fossil_get_command_list`
|
||||
else
|
||||
compadd clone init import help version
|
||||
fi
|
||||
;;
|
||||
subcommand)
|
||||
if [ "$words[2]" = "help" ]; then
|
||||
compadd `_fossil_get_command_list`
|
||||
else
|
||||
compcall -D
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function _fossil_prompt () {
|
||||
local current=`echo $PROMPT $RPROMPT | grep fossil`
|
||||
|
||||
if [ "$_FOSSIL_PROMPT" = "" -o "$current" = "" ]; then
|
||||
local _prompt=${PROMPT}
|
||||
local _rprompt=${RPROMPT}
|
||||
|
||||
local is_prompt=`echo $PROMPT | grep git`
|
||||
|
||||
if [ "$is_prompt" = "" ]; then
|
||||
export RPROMPT="$_rprompt"'$(fossil_prompt_info)'
|
||||
else
|
||||
export PROMPT="$_prompt"'$(fossil_prompt_info) '
|
||||
fi
|
||||
|
||||
_FOSSIL_PROMPT="1"
|
||||
fi
|
||||
}
|
||||
|
||||
compdef _fossil fossil
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
|
||||
add-zsh-hook precmd _fossil_prompt
|
||||
|
|
@ -38,7 +38,7 @@ Available search contexts are:
|
|||
| bootsnipp | `http://bootsnipp.com/search?q=` |
|
||||
| caniuse | `http://caniuse.com/#search=` |
|
||||
| codepen | `http://codepen.io/search?q=` |
|
||||
| compass | `http://compass-style.org/search?q=` |
|
||||
| compassdoc | `http://compass-style.org/search?q=` |
|
||||
| cssflow | `http://www.cssflow.com/search?q=` |
|
||||
| dartlang | `https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:` |
|
||||
| emberjs | `http://emberjs.com/api/#stp=1&stq=` |
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ function _frontend() {
|
|||
commands=(
|
||||
'jquery: Search in jQuery website'
|
||||
'mdn: Search in MDN website'
|
||||
'compass: Search in COMPASS website'
|
||||
'compassdoc: Search in COMPASS website'
|
||||
'html5please: Search in HTML5 Please website'
|
||||
'caniuse: Search in Can I Use website'
|
||||
'aurajs: Search in AuraJs website'
|
||||
|
|
@ -57,7 +57,7 @@ function _frontend() {
|
|||
mdn)
|
||||
_describe -t points "Warp points" frontend_points && ret=0
|
||||
;;
|
||||
compass)
|
||||
compassdoc)
|
||||
_describe -t points "Warp points" frontend_points && ret=0
|
||||
;;
|
||||
html5please)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ alias bem='frontend bem'
|
|||
alias bootsnipp='frontend bootsnipp'
|
||||
alias caniuse='frontend caniuse'
|
||||
alias codepen='frontend codepen'
|
||||
alias compass='frontend compass'
|
||||
alias compassdoc='frontend compassdoc'
|
||||
alias cssflow='frontend cssflow'
|
||||
alias dartlang='frontend dartlang'
|
||||
alias emberjs='frontend emberjs'
|
||||
|
|
@ -32,7 +32,7 @@ function frontend() {
|
|||
bootsnipp 'http://bootsnipp.com/search?q='
|
||||
caniuse 'http://caniuse.com/#search='
|
||||
codepen 'http://codepen.io/search?q='
|
||||
compass 'http://compass-style.org/search?q='
|
||||
compassdoc 'http://compass-style.org/search?q='
|
||||
cssflow 'http://www.cssflow.com/search?q='
|
||||
dartlang 'https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:'
|
||||
emberjs 'http://emberjs.com/api/#stp=1&stq='
|
||||
|
|
@ -57,7 +57,7 @@ function frontend() {
|
|||
print -P "%Uterm%u and what follows is what will be searched for in the %Ucontext%u website,"
|
||||
print -P "and %Ucontext%u is one of the following:"
|
||||
print -P ""
|
||||
print -P " angularjs, aurajs, bem, bootsnipp, caniuse, codepen, compass, cssflow,"
|
||||
print -P " angularjs, aurajs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow,"
|
||||
print -P " dartlang, emberjs, fontello, html5please, jquery, lodash, mdn, npmjs,"
|
||||
print -P " qunit, reactjs, smacss, stackoverflow, unheap"
|
||||
print -P ""
|
||||
|
|
@ -73,7 +73,7 @@ function frontend() {
|
|||
echo ""
|
||||
echo "Valid contexts are:"
|
||||
echo ""
|
||||
echo " angularjs, aurajs, bem, bootsnipp, caniuse, codepen, compass, cssflow, "
|
||||
echo " angularjs, aurajs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow, "
|
||||
echo " dartlang, emberjs, fontello, html5please, jquery, lodash, mdn, npmjs, "
|
||||
echo " qunit, reactjs, smacss, stackoverflow, unheap"
|
||||
echo ""
|
||||
|
|
|
|||
21
plugins/gb/README.md
Normal file
21
plugins/gb/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# `gb` plugin
|
||||
|
||||
> A project based build tool for the Go programming language.
|
||||
|
||||
See https://getgb.io for the full `gb` documentation
|
||||
|
||||
* * * *
|
||||
|
||||
- Adds completion support for all `gb` commands.
|
||||
- Also supports completion for the [`gb-vendor` plugin](https://godoc.org/github.com/constabulary/gb/cmd/gb-vendor).
|
||||
|
||||
To use it, add `gb` to your plugins array:
|
||||
```sh
|
||||
plugins=(... gb)
|
||||
```
|
||||
|
||||
## Caveats
|
||||
|
||||
The `git` plugin defines an alias `gb` that usually conflicts with the `gb` program.
|
||||
If you're having trouble with it, remove it by adding `unalias gb` at the end of your
|
||||
zshrc file.
|
||||
111
plugins/gb/_gb
Normal file
111
plugins/gb/_gb
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
#compdef gb
|
||||
#autoload
|
||||
|
||||
_gb () {
|
||||
local ret=1 state
|
||||
_arguments -C ':command:->command' '*::options:->options' && ret=0
|
||||
|
||||
case $state in
|
||||
(command)
|
||||
local -a subcommands
|
||||
subcommands=(
|
||||
"build:build a package"
|
||||
"doc:show documentation for a package or symbol"
|
||||
"env:print project environment variables"
|
||||
"generate:generate Go files by processing source"
|
||||
"help:displays the help"
|
||||
"info:info returns information about this project"
|
||||
"list:list the packages named by the importpaths"
|
||||
"test:test packages"
|
||||
"vendor:manage your vendored dependencies"
|
||||
)
|
||||
_describe -t subcommands 'gb subcommands' subcommands && ret=0
|
||||
;;
|
||||
(options)
|
||||
case $line[1] in
|
||||
(build)
|
||||
_arguments \
|
||||
-f'[ignore cached packages]' \
|
||||
-F'[do not cache packages]' \
|
||||
-q'[decreases verbosity]' \
|
||||
-P'[the number of build jobs to run in parallel]' \
|
||||
-R'[sets the base of the project root search path]' \
|
||||
-dotfile'[output a dot formatted file of the build steps]' \
|
||||
-ldflags'["flag list" arguments to pass to the linker]' \
|
||||
-gcflags'["arg list" arguments to pass to the compiler]' \
|
||||
-race'[enable data race detection]' \
|
||||
-tags'["tag list" additional build tags]'
|
||||
;;
|
||||
(list)
|
||||
_arguments \
|
||||
-f'[alternate format for the list, using the syntax of package template]' \
|
||||
-s'[read format template from STDIN]' \
|
||||
-json'[prints output in structured JSON format]'
|
||||
;;
|
||||
(test)
|
||||
_arguments \
|
||||
-v'[print output from test subprocess]' \
|
||||
-ldflags'["flag list" arguments to pass to the linker]' \
|
||||
-gcflags'["arg list" arguments to pass to the compiler]' \
|
||||
-race'[enable data race detection]' \
|
||||
-tags'["tag list" additional build tags]'
|
||||
;;
|
||||
(vendor)
|
||||
_gb-vendor
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
_gb-vendor () {
|
||||
local curcontext="$curcontext" state line
|
||||
_arguments -C ':command:->command' '*::options:->options'
|
||||
|
||||
case $state in
|
||||
(command)
|
||||
local -a subcommands
|
||||
subcommands=(
|
||||
'delete:deletes a local dependency'
|
||||
'fetch:fetch a remote dependency'
|
||||
'list:lists dependencies, one per line'
|
||||
'purge:remove all unreferenced dependencies'
|
||||
'restore:restore dependencies from the manifest'
|
||||
'update:update a local dependency'
|
||||
)
|
||||
_describe -t subcommands 'gb vendor subcommands' subcommands && ret=0
|
||||
;;
|
||||
(options)
|
||||
case $line[1] in
|
||||
(delete)
|
||||
_arguments \
|
||||
-all'[remove all dependencies]'
|
||||
;;
|
||||
(fetch)
|
||||
_arguments \
|
||||
-branch'[fetch from a particular branch]' \
|
||||
-no-recurse'[do not fetch recursively]' \
|
||||
-tag'[fetch the specified tag]' \
|
||||
-revision'[fetch the specific revision from the branch (if supplied)]' \
|
||||
-precaire'[allow the use of insecure protocols]' \
|
||||
;;
|
||||
(list)
|
||||
_arguments \
|
||||
-f'[controls the template used for printing each manifest entry]'
|
||||
;;
|
||||
(restore)
|
||||
_arguments \
|
||||
-precaire'[allow the use of insecure protocols]'
|
||||
;;
|
||||
(update)
|
||||
_arguments \
|
||||
-all'[update all dependencies in the manifest or supply a given dependency]' \
|
||||
-precaire'[allow the use of insecure protocols]'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_gb
|
||||
12
plugins/geeknote/README.md
Normal file
12
plugins/geeknote/README.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
## ZSH-Geeknote
|
||||
|
||||
[Geeknote](https://github.com/VitaliyRodnenko/geeknote) plugin for [oh-my-zsh framework](http://github.com/robbyrussell/oh-my-zsh).
|
||||
|
||||
Plugins provides:
|
||||
|
||||
- auto completion of commands and their options
|
||||
- alias `gn`
|
||||
|
||||
You can find information how to install Geeknote and it's available commands on the [project website](http://www.geeknote.me/).
|
||||
|
||||
Maintainer : Ján Koščo ([@s7anley](https://twitter.com/s7anley))
|
||||
136
plugins/geeknote/_geeknote
Normal file
136
plugins/geeknote/_geeknote
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
#compdef geeknote
|
||||
# --------------- ------------------------------------------------------------
|
||||
# Name : _geeknote
|
||||
# Synopsis : zsh completion for geeknote
|
||||
# Author : Ján Koščo <3k.stanley@gmail.com>
|
||||
# HomePage : http://www.geeknote.me
|
||||
# Version : 0.1
|
||||
# Tag : [ shell, zsh, completion, evernote ]
|
||||
# Copyright : © 2014 by Ján Koščo,
|
||||
# Released under current GPL license.
|
||||
# --------------- ------------------------------------------------------------
|
||||
|
||||
local -a _1st_arguments
|
||||
_1st_arguments=(
|
||||
'login'
|
||||
'logout'
|
||||
'settings'
|
||||
'create'
|
||||
'edit'
|
||||
'find'
|
||||
'show'
|
||||
'remove'
|
||||
'notebook-list'
|
||||
'notebook-create'
|
||||
'notebook-edit'
|
||||
'tag-list'
|
||||
'tag-create'
|
||||
'tag-edit'
|
||||
'tag-remove'
|
||||
'gnsync'
|
||||
'user'
|
||||
)
|
||||
|
||||
_arguments '*:: :->command'
|
||||
|
||||
if (( CURRENT == 1 )); then
|
||||
_describe -t commands "geeknote command" _1st_arguments
|
||||
return
|
||||
fi
|
||||
|
||||
local -a _command_args
|
||||
case "$words[1]" in
|
||||
user)
|
||||
_command_args=(
|
||||
'(--full)--full' \
|
||||
)
|
||||
;;
|
||||
logout)
|
||||
_command_args=(
|
||||
'(--force)--force' \
|
||||
)
|
||||
;;
|
||||
settings)
|
||||
_command_args=(
|
||||
'(--editor)--editor' \
|
||||
)
|
||||
;;
|
||||
create)
|
||||
_command_args=(
|
||||
'(-t|--title)'{-t,--title}'[note title]' \
|
||||
'(-c|--content)'{-c,--content}'[note content]' \
|
||||
'(-tg|--tags)'{-tg,--tags}'[one tag or the list of tags which will be added to the note]' \
|
||||
'(-nb|--notebook)'{-nb,--notebook}'[name of notebook where to save note]' \
|
||||
)
|
||||
;;
|
||||
edit)
|
||||
_command_args=(
|
||||
'(-n|--note)'{-n,--note}'[name or ID from the previous search of a note to edit]' \
|
||||
'(-t|--title)'{-t,--title}'[note title]' \
|
||||
'(-c|--content)'{-c,--content}'[note content]' \
|
||||
'(-tg|--tags)'{-tg,--tags}'[one tag or the list of tags which will be added to the note]' \
|
||||
'(-nb|--notebook)'{-nb,--notebook}'[name of notebook where to save note]' \
|
||||
)
|
||||
;;
|
||||
remove)
|
||||
_command_args=(
|
||||
'(-n|--note)'{-n,--note}'[name or ID from the previous search of a note to edit]' \
|
||||
'(--force)--force' \
|
||||
)
|
||||
;;
|
||||
show)
|
||||
_command_args=(
|
||||
'(-n|--note)'{-n,--note}'[name or ID from the previous search of a note to edit]' \
|
||||
)
|
||||
;;
|
||||
find)
|
||||
_command_args=(
|
||||
'(-s|--search)'{-s,--search}'[text to search]' \
|
||||
'(-tg|--tags)'{-tg,--tags}'[notes with which tag/tags to search]' \
|
||||
'(-nb|--notebook)'{-nb,--notebook}'[in which notebook search the note]' \
|
||||
'(-d|--date)'{-d,--date}'[date in format dd.mm.yyyy or date range dd.mm.yyyy-dd.mm.yyyy]' \
|
||||
'(-cn|--count)'{-cn,--count}'[how many notes show in the result list]' \
|
||||
'(-uo|--url-only)'{-uo,--url-only}'[add direct url of each note in results to Evernote web-version]' \
|
||||
'(-ee|--exact-entry)'{-ee,--exact-entry}'[search for exact entry of the request]' \
|
||||
'(-cs|--content-search)'{-cs,--content-search}'[search by content, not by title]' \
|
||||
)
|
||||
;;
|
||||
notebook-create)
|
||||
_command_args=(
|
||||
'(-t|--title)'{-t,--title}'[notebook title]' \
|
||||
)
|
||||
;;
|
||||
notebook-edit)
|
||||
_command_args=(
|
||||
'(-nb|--notebook)'{-nb,--notebook}'[name of notebook to rename]' \
|
||||
'(-t|--title)'{-t,--title}'[new notebook title]' \
|
||||
)
|
||||
;;
|
||||
notebook-remove)
|
||||
_command_args=(
|
||||
'(-nb|--notebook)'{-nb,--notebook}'[name of notebook to remove]' \
|
||||
'(--force)--force' \
|
||||
)
|
||||
;;
|
||||
tag-create)
|
||||
_command_args=(
|
||||
'(-t|--title)'{-t,--title}'[title of tag]' \
|
||||
)
|
||||
;;
|
||||
tag-edit)
|
||||
_command_args=(
|
||||
'(-tgn|--tagname)'{-tgn,--tagname}'[tag to edit]' \
|
||||
'(-t|--title)'{-t,--title}'[new tag name]' \
|
||||
)
|
||||
;;
|
||||
tag-remove)
|
||||
_command_args=(
|
||||
'(-tgn|--tagname)'{-tgn,--tagname}'[tag to remove]' \
|
||||
'(--force)--force' \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
_arguments \
|
||||
$_command_args \
|
||||
&& return 0
|
||||
2
plugins/geeknote/geeknote.plugin.zsh
Normal file
2
plugins/geeknote/geeknote.plugin.zsh
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#Alias
|
||||
alias gn='geeknote'
|
||||
11
plugins/git-extras/README.md
Normal file
11
plugins/git-extras/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# git-extras
|
||||
|
||||
This plugin provides completion definitions for some of the commands defined by [git-extras](http://github.com/tj/git-extras).
|
||||
|
||||
## Setup notes
|
||||
|
||||
The completions work by augmenting the `_git` completion provided by `zsh`. This only works with the `zsh`-provided `_git`, not the `_git` provided by `git` itself. If you have both `zsh` and `git` installed, you need to make sure that the `zsh`-provided `_git` takes precedence.
|
||||
|
||||
### OS X Homebrew Setup
|
||||
|
||||
On OS X with Homebrew, you need to install `git` with `brew install git --without-completions`. Otherwise, `git`'s `_git` will take precedence, and you won't see the completions for `git-extras` commands.
|
||||
|
|
@ -1,10 +1,13 @@
|
|||
#compdef git
|
||||
# ------------------------------------------------------------------------------
|
||||
# Description
|
||||
# -----------
|
||||
#
|
||||
# Completion script for git-extras (http://github.com/tj/git-extras).
|
||||
#
|
||||
# This depends on and reuses some of the internals of the _git completion
|
||||
# function that ships with zsh itself. It will not work with the _git that ships
|
||||
# with git.
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
# Authors
|
||||
# -------
|
||||
|
|
@ -22,16 +25,18 @@
|
|||
# ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
__git_command_successful () {
|
||||
if (( ${#pipestatus:#0} > 0 )); then
|
||||
_message 'not a git repository'
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
# Internal functions
|
||||
# These are a lot like their __git_* equivalents inside _git
|
||||
|
||||
__gitex_command_successful () {
|
||||
if (( ${#*:#0} > 0 )); then
|
||||
_message 'not a git repository'
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
__git_commits() {
|
||||
__gitex_commits() {
|
||||
declare -A commits
|
||||
git log --oneline -15 | sed 's/\([[:alnum:]]\{7\}\) /\1:/' | while read commit
|
||||
do
|
||||
|
|
@ -42,7 +47,7 @@ __git_commits() {
|
|||
_describe -t commits commit commits && ret=0
|
||||
}
|
||||
|
||||
__git_tag_names() {
|
||||
__gitex_tag_names() {
|
||||
local expl
|
||||
declare -a tag_names
|
||||
tag_names=(${${(f)"$(_call_program tags git for-each-ref --format='"%(refname)"' refs/tags 2>/dev/null)"}#refs/tags/})
|
||||
|
|
@ -51,7 +56,7 @@ __git_tag_names() {
|
|||
}
|
||||
|
||||
|
||||
__git_branch_names() {
|
||||
__gitex_branch_names() {
|
||||
local expl
|
||||
declare -a branch_names
|
||||
branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/})
|
||||
|
|
@ -59,7 +64,7 @@ __git_branch_names() {
|
|||
_wanted branch-names expl branch-name compadd $* - $branch_names
|
||||
}
|
||||
|
||||
__git_specific_branch_names() {
|
||||
__gitex_specific_branch_names() {
|
||||
local expl
|
||||
declare -a branch_names
|
||||
branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads/"$1" 2>/dev/null)"}#refs/heads/$1/})
|
||||
|
|
@ -67,32 +72,28 @@ __git_specific_branch_names() {
|
|||
_wanted branch-names expl branch-name compadd $* - $branch_names
|
||||
}
|
||||
|
||||
|
||||
__git_feature_branch_names() {
|
||||
__git_specific_branch_names 'feature'
|
||||
__gitex_feature_branch_names() {
|
||||
__gitex_specific_branch_names 'feature'
|
||||
}
|
||||
|
||||
|
||||
__git_refactor_branch_names() {
|
||||
__git_specific_branch_names 'refactor'
|
||||
__gitex_refactor_branch_names() {
|
||||
__gitex_specific_branch_names 'refactor'
|
||||
}
|
||||
|
||||
|
||||
__git_bug_branch_names() {
|
||||
__git_specific_branch_names 'bug'
|
||||
__gitex_bug_branch_names() {
|
||||
__gitex_specific_branch_names 'bug'
|
||||
}
|
||||
|
||||
|
||||
__git_submodule_names() {
|
||||
__gitex_submodule_names() {
|
||||
local expl
|
||||
declare -a submodule_names
|
||||
submodule_names=(${(f)"$(_call_program branchrefs git submodule status | awk '{print $2}')"})
|
||||
submodule_names=(${(f)"$(_call_program branchrefs git submodule status | awk '{print $2}')"}) # '
|
||||
__git_command_successful || return
|
||||
_wanted submodule-names expl submodule-name compadd $* - $submodule_names
|
||||
}
|
||||
|
||||
|
||||
__git_author_names() {
|
||||
__gitex_author_names() {
|
||||
local expl
|
||||
declare -a author_names
|
||||
author_names=(${(f)"$(_call_program branchrefs git log --format='%aN' | sort -u)"})
|
||||
|
|
@ -123,7 +124,7 @@ _git-bug() {
|
|||
case $line[1] in
|
||||
(finish)
|
||||
_arguments -C \
|
||||
':branch-name:__git_bug_branch_names'
|
||||
':branch-name:__gitex_bug_branch_names'
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
|
|
@ -139,7 +140,7 @@ _git-changelog() {
|
|||
|
||||
_git-contrib() {
|
||||
_arguments \
|
||||
':author:__git_author_names'
|
||||
':author:__gitex_author_names'
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -151,19 +152,19 @@ _git-count() {
|
|||
|
||||
_git-delete-branch() {
|
||||
_arguments \
|
||||
':branch-name:__git_branch_names'
|
||||
':branch-name:__gitex_branch_names'
|
||||
}
|
||||
|
||||
|
||||
_git-delete-submodule() {
|
||||
_arguments \
|
||||
':submodule-name:__git_submodule_names'
|
||||
':submodule-name:__gitex_submodule_names'
|
||||
}
|
||||
|
||||
|
||||
_git-delete-tag() {
|
||||
_arguments \
|
||||
':tag-name:__git_tag_names'
|
||||
':tag-name:__gitex_tag_names'
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -172,6 +173,7 @@ _git-effort() {
|
|||
'--above[ignore file with less than x commits]'
|
||||
}
|
||||
|
||||
|
||||
_git-extras() {
|
||||
local curcontext=$curcontext state line ret=1
|
||||
declare -A opt_args
|
||||
|
|
@ -216,7 +218,7 @@ _git-feature() {
|
|||
case $line[1] in
|
||||
(finish)
|
||||
_arguments -C \
|
||||
':branch-name:__git_feature_branch_names'
|
||||
':branch-name:__gitex_feature_branch_names'
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
|
|
@ -225,8 +227,8 @@ _git-feature() {
|
|||
|
||||
_git-graft() {
|
||||
_arguments \
|
||||
':src-branch-name:__git_branch_names' \
|
||||
':dest-branch-name:__git_branch_names'
|
||||
':src-branch-name:__gitex_branch_names' \
|
||||
':dest-branch-name:__gitex_branch_names'
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -236,12 +238,14 @@ _git-ignore() {
|
|||
'(--global -g)'{--global,-g}'[show global gitignore]'
|
||||
}
|
||||
|
||||
|
||||
_git-missing() {
|
||||
_arguments \
|
||||
':first-branch-name:__git_branch_names' \
|
||||
':second-branch-name:__git_branch_names'
|
||||
':first-branch-name:__gitex_branch_names' \
|
||||
':second-branch-name:__gitex_branch_names'
|
||||
}
|
||||
|
||||
|
||||
_git-refactor() {
|
||||
local curcontext=$curcontext state line ret=1
|
||||
declare -A opt_args
|
||||
|
|
@ -263,7 +267,7 @@ _git-refactor() {
|
|||
case $line[1] in
|
||||
(finish)
|
||||
_arguments -C \
|
||||
':branch-name:__git_refactor_branch_names'
|
||||
':branch-name:__gitex_refactor_branch_names'
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
|
|
@ -272,12 +276,12 @@ _git-refactor() {
|
|||
|
||||
_git-squash() {
|
||||
_arguments \
|
||||
':branch-name:__git_branch_names'
|
||||
':branch-name:__gitex_branch_names'
|
||||
}
|
||||
|
||||
_git-summary() {
|
||||
_arguments '--line[summarize with lines other than commits]'
|
||||
__git_commits
|
||||
_arguments '--line[summarize with lines rather than commits]'
|
||||
__gitex_commits
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -298,7 +302,7 @@ zstyle ':completion:*:*:git:*' user-commands \
|
|||
count:'count commits' \
|
||||
create-branch:'create local and remote branch' \
|
||||
delete-branch:'delete local and remote branch' \
|
||||
delete-merged-brancees:'delete merged branches'\
|
||||
delete-merged-branches:'delete merged branches'\
|
||||
delete-submodule:'delete submodule' \
|
||||
delete-tag:'delete local and remote tag' \
|
||||
effort:'display effort statistics' \
|
||||
|
|
|
|||
31
plugins/git-flow/README.md
Normal file
31
plugins/git-flow/README.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Git-Flow plugin
|
||||
|
||||
This plugin adds completion and aliases for the `git-flow` command. More information
|
||||
at https://github.com/nvie/gitflow.
|
||||
|
||||
Enable git-flow plugin in your zshrc file:
|
||||
```
|
||||
plugins=(... git-flow)
|
||||
```
|
||||
|
||||
## Aliases
|
||||
|
||||
More information about `git-flow` commands:
|
||||
https://github.com/nvie/gitflow/wiki/Command-Line-Arguments
|
||||
|
||||
| Alias | Command | Description |
|
||||
|---------|---------------------------|----------------------------------------|
|
||||
| `gfl` | `git flow` | Git-Flow command |
|
||||
| `gfli` | `git flow init` | Initialize git-flow repository |
|
||||
| `gcd` | `git checkout develop` | Check out develop branch |
|
||||
| `gch` | `git checkout hotfix` | Check out hotfix branch |
|
||||
| `gcr` | `git checkout release` | Check out release branch |
|
||||
| `gflf` | `git flow feature` | List existing feature branches |
|
||||
| `gflh` | `git flow hotfix` | List existing hotfix branches |
|
||||
| `gflr` | `git flow release` | List existing release branches |
|
||||
| `gflfs` | `git flow feature start` | Start a new feature: `gflfs <name>` |
|
||||
| `gflhs` | `git flow hotfix start` | Start a new hotfix: `gflhs <version>` |
|
||||
| `gflrs` | `git flow release start` | Start a new release: `gflrs <version>` |
|
||||
| `gflff` | `git flow feature finish` | Finish feature: `gflff <name>` |
|
||||
| `gflhf` | `git flow hotfix finish` | Finish hotfix: `gflhf <version>` |
|
||||
| `gflrf` | `git flow release finish` | Finish release: `gflrf <version>` |
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
# To achieve git-flow completion nirvana:
|
||||
#
|
||||
# 0. Update your zsh's git-completion module to the newest version.
|
||||
# From here. http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD
|
||||
# From here. https://raw.githubusercontent.com/zsh-users/zsh/master/Completion/Unix/Command/_git
|
||||
#
|
||||
# 1. Install this file. Either:
|
||||
#
|
||||
|
|
@ -22,9 +22,19 @@
|
|||
|
||||
#Alias
|
||||
alias gfl='git flow'
|
||||
alias gfli='git flow init'
|
||||
alias gcd='git checkout develop'
|
||||
alias gch='git checkout hotfix'
|
||||
alias gcr='git checkout release'
|
||||
alias gflf='git flow feature'
|
||||
alias gflh='git flow hotfix'
|
||||
alias gflr='git flow release'
|
||||
alias gflfs='git flow feature start'
|
||||
alias gflhs='git flow hotfix start'
|
||||
alias gflrs='git flow release start'
|
||||
alias gflff='git flow feature finish'
|
||||
alias gflhf='git flow hotfix finish'
|
||||
alias gflrf='git flow release finish'
|
||||
|
||||
_git-flow ()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -20,6 +20,13 @@
|
|||
# c. Or, use this file as an oh-my-zsh plugin.
|
||||
#
|
||||
|
||||
alias ghf='git hf'
|
||||
alias ghff='git hf feature'
|
||||
alias ghfr='git hf release'
|
||||
alias ghfh='git hf hotfix'
|
||||
alias ghfs='git hf support'
|
||||
alias ghfu='git hf update'
|
||||
|
||||
_git-hf ()
|
||||
{
|
||||
local curcontext="$curcontext" state line
|
||||
|
|
|
|||
|
|
@ -6,19 +6,12 @@ zstyle -s ":vcs_info:git:*:-all-" "command" _omz_git_git_cmd
|
|||
# Functions
|
||||
#
|
||||
|
||||
# The current branch name
|
||||
# Usage example: git pull origin $(current_branch)
|
||||
# Using '--quiet' with 'symbolic-ref' will not cause a fatal error (128) if
|
||||
# it's not a symbolic ref, but in a Git repo.
|
||||
# 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() {
|
||||
local ref
|
||||
ref=$($_omz_git_git_cmd symbolic-ref --quiet HEAD 2> /dev/null)
|
||||
local ret=$?
|
||||
if [[ $ret != 0 ]]; then
|
||||
[[ $ret == 128 ]] && return # no git repo.
|
||||
ref=$($_omz_git_git_cmd rev-parse --short HEAD 2> /dev/null) || return
|
||||
fi
|
||||
echo ${ref#refs/heads/}
|
||||
git_current_branch
|
||||
}
|
||||
# The list of remotes
|
||||
function current_repository() {
|
||||
|
|
@ -50,10 +43,12 @@ 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 gbda='git branch --merged | command grep -vE "^(\*|\s*master\s*$)" | command xargs -n 1 git branch -d'
|
||||
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'
|
||||
|
|
@ -65,103 +60,124 @@ 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 -s --no-edit --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 gcount=git
|
||||
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 gdw='git diff --word-diff'
|
||||
|
||||
alias gf='git fetch'
|
||||
alias gfa='git fetch --all --prune'
|
||||
function gfg() { git ls-files | grep $@ }
|
||||
compdef gfg=grep
|
||||
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="$(current_branch)"
|
||||
git push --force origin "${b:=$1}"
|
||||
[[ "$#" != 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="$(current_branch)"
|
||||
git pull origin "${b:=$1}"
|
||||
fi
|
||||
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
|
||||
alias ggpull='git pull origin $(current_branch)'
|
||||
compdef _git ggpull=git-checkout
|
||||
|
||||
ggp() {
|
||||
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||
git push origin "${*}"
|
||||
else
|
||||
[[ "$#" == 0 ]] && local b="$(current_branch)"
|
||||
git push origin "${b:=$1}"
|
||||
fi
|
||||
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
|
||||
alias ggpush='git push origin $(current_branch)'
|
||||
compdef _git ggpush=git-checkout
|
||||
|
||||
ggpnp() {
|
||||
if [[ "$#" == 0 ]]; then
|
||||
ggl && ggp
|
||||
else
|
||||
ggl "${*}" && ggp "${*}"
|
||||
fi
|
||||
if [[ "$#" == 0 ]]; then
|
||||
ggl && ggp
|
||||
else
|
||||
ggl "${*}" && ggp "${*}"
|
||||
fi
|
||||
}
|
||||
compdef _git ggpnp=git-checkout
|
||||
alias ggsup='git branch --set-upstream-to=origin/$(current_branch)'
|
||||
|
||||
ggu() {
|
||||
[[ "$#" != 1 ]] && local b="$(current_branch)"
|
||||
git pull --rebase origin "${b:=$1}"
|
||||
[[ "$#" != 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-svn-dcommit-push=git
|
||||
compdef _git git-svn-dcommit-push=git
|
||||
|
||||
alias gk='\gitk --all --branches'
|
||||
compdef _git gk='gitk'
|
||||
alias gke='\gitk --all $(git log -g --pretty=format:%h)'
|
||||
alias gke='\gitk --all $(git log -g --pretty=%h)'
|
||||
compdef _git gke='gitk'
|
||||
|
||||
alias gl='git pull'
|
||||
alias glg='git log --stat --color'
|
||||
alias glgp='git log --stat --color -p'
|
||||
alias glgg='git log --graph --color'
|
||||
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 --color'
|
||||
alias glol="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
|
||||
alias glola="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"
|
||||
alias glog='git log --oneline --decorate --color --graph'
|
||||
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
|
||||
|
||||
|
|
@ -203,8 +219,9 @@ 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'
|
||||
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'
|
||||
|
|
@ -212,13 +229,13 @@ 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 gvt='git verify-tag'
|
||||
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 -m "--wip--"'
|
||||
alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip-- [skip ci]"'
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ __git_zsh_bash_func ()
|
|||
|
||||
local expansion=$(__git_aliased_command "$command")
|
||||
if [ -n "$expansion" ]; then
|
||||
words[1]=$expansion
|
||||
completion_func="_git_${expansion//-/_}"
|
||||
declare -f $completion_func >/dev/null && $completion_func
|
||||
fi
|
||||
|
|
@ -213,8 +214,10 @@ _git ()
|
|||
|
||||
if (( $+functions[__${service}_zsh_main] )); then
|
||||
__${service}_zsh_main
|
||||
else
|
||||
elif (( $+functions[__${service}_main] )); then
|
||||
emulate ksh -c __${service}_main
|
||||
elif (( $+functions[_${service}] )); then
|
||||
emulate ksh -c _${service}
|
||||
fi
|
||||
|
||||
let _ret && _default && _ret=0
|
||||
|
|
|
|||
|
|
@ -10,17 +10,24 @@
|
|||
# *) local and remote tag names
|
||||
# *) .git/remotes file names
|
||||
# *) git 'subcommands'
|
||||
# *) git email aliases for git-send-email
|
||||
# *) tree paths within 'ref:path/to/file' expressions
|
||||
# *) file paths within current working directory and index
|
||||
# *) common --long-options
|
||||
#
|
||||
# To use these routines:
|
||||
#
|
||||
# 1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
|
||||
# 1) Copy this file to somewhere (e.g. ~/.git-completion.bash).
|
||||
# 2) Add the following line to your .bashrc/.zshrc:
|
||||
# source ~/.git-completion.sh
|
||||
# source ~/.git-completion.bash
|
||||
# 3) Consider changing your PS1 to also show the current branch,
|
||||
# see git-prompt.sh for details.
|
||||
#
|
||||
# If you use complex aliases of form '!f() { ... }; f', you can use the null
|
||||
# command ':' as the first command in the function body to declare the desired
|
||||
# completion style. For example '!f() { : git commit ; ... }; f' will
|
||||
# tell the completion to use commit completion. This also works with aliases
|
||||
# of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".
|
||||
|
||||
case "$COMP_WORDBREAKS" in
|
||||
*:*) : great ;;
|
||||
|
|
@ -180,7 +187,7 @@ fi
|
|||
|
||||
__gitcompappend ()
|
||||
{
|
||||
local i=${#COMPREPLY[@]}
|
||||
local x i=${#COMPREPLY[@]}
|
||||
for x in $1; do
|
||||
if [[ "$x" == "$3"* ]]; then
|
||||
COMPREPLY[i++]="$2$x$4"
|
||||
|
|
@ -275,16 +282,12 @@ __gitcomp_file ()
|
|||
# argument, and using the options specified in the second argument.
|
||||
__git_ls_files_helper ()
|
||||
{
|
||||
(
|
||||
test -n "${CDPATH+set}" && unset CDPATH
|
||||
cd "$1"
|
||||
if [ "$2" == "--committable" ]; then
|
||||
git diff-index --name-only --relative HEAD
|
||||
else
|
||||
# NOTE: $2 is not quoted in order to support multiple options
|
||||
git ls-files --exclude-standard $2
|
||||
fi
|
||||
) 2>/dev/null
|
||||
if [ "$2" == "--committable" ]; then
|
||||
git -C "$1" diff-index --name-only --relative HEAD
|
||||
else
|
||||
# NOTE: $2 is not quoted in order to support multiple options
|
||||
git -C "$1" ls-files --exclude-standard $2
|
||||
fi 2>/dev/null
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -382,7 +385,8 @@ __git_refs ()
|
|||
;;
|
||||
*)
|
||||
echo "HEAD"
|
||||
git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##"
|
||||
git for-each-ref --format="%(refname:short)" -- \
|
||||
"refs/remotes/$dir/" 2>/dev/null | sed -e "s#^$dir/##"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
|
@ -408,12 +412,9 @@ __git_refs_remotes ()
|
|||
|
||||
__git_remotes ()
|
||||
{
|
||||
local i IFS=$'\n' d="$(__gitdir)"
|
||||
local d="$(__gitdir)"
|
||||
test -d "$d/remotes" && ls -1 "$d/remotes"
|
||||
for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do
|
||||
i="${i#remote.}"
|
||||
echo "${i/.url*/}"
|
||||
done
|
||||
git --git-dir="$d" remote
|
||||
}
|
||||
|
||||
__git_list_merge_strategies ()
|
||||
|
|
@ -516,7 +517,7 @@ __git_complete_index_file ()
|
|||
;;
|
||||
esac
|
||||
|
||||
__gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
|
||||
__gitcomp_file "$(__git_index_files "$1" ${pfx:+"$pfx"})" "$pfx" "$cur_"
|
||||
}
|
||||
|
||||
__git_complete_file ()
|
||||
|
|
@ -663,10 +664,11 @@ __git_list_porcelain_commands ()
|
|||
check-mailmap) : plumbing;;
|
||||
check-ref-format) : plumbing;;
|
||||
checkout-index) : plumbing;;
|
||||
column) : internal helper;;
|
||||
commit-tree) : plumbing;;
|
||||
count-objects) : infrequent;;
|
||||
credential-cache) : credentials helper;;
|
||||
credential-store) : credentials helper;;
|
||||
credential) : credentials;;
|
||||
credential-*) : credentials helper;;
|
||||
cvsexportcommit) : export;;
|
||||
cvsimport) : import;;
|
||||
cvsserver) : daemon;;
|
||||
|
|
@ -735,35 +737,28 @@ __git_list_porcelain_commands ()
|
|||
__git_porcelain_commands=
|
||||
__git_compute_porcelain_commands ()
|
||||
{
|
||||
__git_compute_all_commands
|
||||
test -n "$__git_porcelain_commands" ||
|
||||
__git_porcelain_commands=$(__git_list_porcelain_commands)
|
||||
}
|
||||
|
||||
# Lists all set config variables starting with the given section prefix,
|
||||
# with the prefix removed.
|
||||
__git_get_config_variables ()
|
||||
{
|
||||
local section="$1" i IFS=$'\n'
|
||||
for i in $(git --git-dir="$(__gitdir)" config --name-only --get-regexp "^$section\..*" 2>/dev/null); do
|
||||
echo "${i#$section.}"
|
||||
done
|
||||
}
|
||||
|
||||
__git_pretty_aliases ()
|
||||
{
|
||||
local i IFS=$'\n'
|
||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do
|
||||
case "$i" in
|
||||
pretty.*)
|
||||
i="${i#pretty.}"
|
||||
echo "${i/ */}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
__git_get_config_variables "pretty"
|
||||
}
|
||||
|
||||
__git_aliases ()
|
||||
{
|
||||
local i IFS=$'\n'
|
||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do
|
||||
case "$i" in
|
||||
alias.*)
|
||||
i="${i#alias.}"
|
||||
echo "${i/ */}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
__git_get_config_variables "alias"
|
||||
}
|
||||
|
||||
# __git_aliased_command requires 1 argument
|
||||
|
|
@ -781,6 +776,10 @@ __git_aliased_command ()
|
|||
-*) : option ;;
|
||||
*=*) : setting env ;;
|
||||
git) : git itself ;;
|
||||
\(\)) : skip parens of shell function definition ;;
|
||||
{) : skip start of shell helper function ;;
|
||||
:) : skip null command ;;
|
||||
\'*) : skip opening quote after sh -c ;;
|
||||
*)
|
||||
echo "$word"
|
||||
return
|
||||
|
|
@ -973,7 +972,7 @@ _git_branch ()
|
|||
|
||||
case "$cur" in
|
||||
--set-upstream-to=*)
|
||||
__gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}"
|
||||
__gitcomp_nl "$(__git_refs)" "" "${cur##--set-upstream-to=}"
|
||||
;;
|
||||
--*)
|
||||
__gitcomp "
|
||||
|
|
@ -1041,7 +1040,7 @@ _git_checkout ()
|
|||
|
||||
_git_cherry ()
|
||||
{
|
||||
__gitcomp "$(__git_refs)"
|
||||
__gitcomp_nl "$(__git_refs)"
|
||||
}
|
||||
|
||||
_git_cherry_pick ()
|
||||
|
|
@ -1110,7 +1109,7 @@ _git_commit ()
|
|||
|
||||
case "$cur" in
|
||||
--cleanup=*)
|
||||
__gitcomp "default strip verbatim whitespace
|
||||
__gitcomp "default scissors strip verbatim whitespace
|
||||
" "" "${cur##--cleanup=}"
|
||||
return
|
||||
;;
|
||||
|
|
@ -1165,12 +1164,12 @@ __git_diff_common_options="--stat --numstat --shortstat --summary
|
|||
--full-index --binary --abbrev --diff-filter=
|
||||
--find-copies-harder
|
||||
--text --ignore-space-at-eol --ignore-space-change
|
||||
--ignore-all-space --exit-code --quiet --ext-diff
|
||||
--no-ext-diff
|
||||
--ignore-all-space --ignore-blank-lines --exit-code
|
||||
--quiet --ext-diff --no-ext-diff
|
||||
--no-prefix --src-prefix= --dst-prefix=
|
||||
--inter-hunk-context=
|
||||
--patience --histogram --minimal
|
||||
--raw --word-diff
|
||||
--raw --word-diff --word-diff-regex=
|
||||
--dirstat --dirstat= --dirstat-by-file
|
||||
--dirstat-by-file= --cumulative
|
||||
--diff-algorithm=
|
||||
|
|
@ -1197,7 +1196,7 @@ _git_diff ()
|
|||
}
|
||||
|
||||
__git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
|
||||
tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare
|
||||
tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc codecompare
|
||||
"
|
||||
|
||||
_git_difftool ()
|
||||
|
|
@ -1221,14 +1220,20 @@ _git_difftool ()
|
|||
__git_complete_revlist_file
|
||||
}
|
||||
|
||||
__git_fetch_recurse_submodules="yes on-demand no"
|
||||
|
||||
__git_fetch_options="
|
||||
--quiet --verbose --append --upload-pack --force --keep --depth=
|
||||
--tags --no-tags --all --prune --dry-run
|
||||
--tags --no-tags --all --prune --dry-run --recurse-submodules=
|
||||
"
|
||||
|
||||
_git_fetch ()
|
||||
{
|
||||
case "$cur" in
|
||||
--recurse-submodules=*)
|
||||
__gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
|
||||
return
|
||||
;;
|
||||
--*)
|
||||
__gitcomp "$__git_fetch_options"
|
||||
return
|
||||
|
|
@ -1292,7 +1297,7 @@ _git_gitk ()
|
|||
}
|
||||
|
||||
__git_match_ctag() {
|
||||
awk "/^${1////\\/}/ { print \$1 }" "$2"
|
||||
awk "/^${1//\//\\/}/ { print \$1 }" "$2"
|
||||
}
|
||||
|
||||
_git_grep ()
|
||||
|
|
@ -1307,6 +1312,7 @@ _git_grep ()
|
|||
--full-name --line-number
|
||||
--extended-regexp --basic-regexp --fixed-strings
|
||||
--perl-regexp
|
||||
--threads
|
||||
--files-with-matches --name-only
|
||||
--files-without-match
|
||||
--max-depth
|
||||
|
|
@ -1412,7 +1418,7 @@ __git_log_gitk_options="
|
|||
# Options that go well for log and shortlog (not gitk)
|
||||
__git_log_shortlog_options="
|
||||
--author= --committer= --grep=
|
||||
--all-match
|
||||
--all-match --invert-grep
|
||||
"
|
||||
|
||||
__git_log_pretty_formats="oneline short medium full fuller email raw format:"
|
||||
|
|
@ -1438,7 +1444,7 @@ _git_log ()
|
|||
return
|
||||
;;
|
||||
--decorate=*)
|
||||
__gitcomp "long short" "" "${cur##--decorate=}"
|
||||
__gitcomp "full short no" "" "${cur##--decorate=}"
|
||||
return
|
||||
;;
|
||||
--*)
|
||||
|
|
@ -1451,6 +1457,7 @@ _git_log ()
|
|||
--abbrev-commit --abbrev=
|
||||
--relative-date --date=
|
||||
--pretty= --format= --oneline
|
||||
--show-signature
|
||||
--cherry-pick
|
||||
--graph
|
||||
--decorate --decorate=
|
||||
|
|
@ -1466,9 +1473,12 @@ _git_log ()
|
|||
__git_complete_revlist
|
||||
}
|
||||
|
||||
# Common merge options shared by git-merge(1) and git-pull(1).
|
||||
__git_merge_options="
|
||||
--no-commit --no-stat --log --no-log --squash --strategy
|
||||
--commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit
|
||||
--verify-signatures --no-verify-signatures --gpg-sign
|
||||
--quiet --verbose --progress --no-progress
|
||||
"
|
||||
|
||||
_git_merge ()
|
||||
|
|
@ -1477,7 +1487,8 @@ _git_merge ()
|
|||
|
||||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp "$__git_merge_options"
|
||||
__gitcomp "$__git_merge_options
|
||||
--rerere-autoupdate --no-rerere-autoupdate --abort"
|
||||
return
|
||||
esac
|
||||
__gitcomp_nl "$(__git_refs)"
|
||||
|
|
@ -1583,6 +1594,10 @@ _git_pull ()
|
|||
__git_complete_strategy && return
|
||||
|
||||
case "$cur" in
|
||||
--recurse-submodules=*)
|
||||
__gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
|
||||
return
|
||||
;;
|
||||
--*)
|
||||
__gitcomp "
|
||||
--rebase --no-rebase
|
||||
|
|
@ -1595,22 +1610,55 @@ _git_pull ()
|
|||
__git_complete_remote_or_refspec
|
||||
}
|
||||
|
||||
__git_push_recurse_submodules="check on-demand"
|
||||
|
||||
__git_complete_force_with_lease ()
|
||||
{
|
||||
local cur_=$1
|
||||
|
||||
case "$cur_" in
|
||||
--*=)
|
||||
;;
|
||||
*:*)
|
||||
__gitcomp_nl "$(__git_refs)" "" "${cur_#*:}"
|
||||
;;
|
||||
*)
|
||||
__gitcomp_nl "$(__git_refs)" "" "$cur_"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_git_push ()
|
||||
{
|
||||
case "$prev" in
|
||||
--repo)
|
||||
__gitcomp_nl "$(__git_remotes)"
|
||||
return
|
||||
;;
|
||||
--recurse-submodules)
|
||||
__gitcomp "$__git_push_recurse_submodules"
|
||||
return
|
||||
;;
|
||||
esac
|
||||
case "$cur" in
|
||||
--repo=*)
|
||||
__gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}"
|
||||
return
|
||||
;;
|
||||
--recurse-submodules=*)
|
||||
__gitcomp "$__git_push_recurse_submodules" "" "${cur##--recurse-submodules=}"
|
||||
return
|
||||
;;
|
||||
--force-with-lease=*)
|
||||
__git_complete_force_with_lease "${cur##--force-with-lease=}"
|
||||
return
|
||||
;;
|
||||
--*)
|
||||
__gitcomp "
|
||||
--all --mirror --tags --dry-run --force --verbose
|
||||
--quiet --prune --delete --follow-tags
|
||||
--receive-pack= --repo= --set-upstream
|
||||
--force-with-lease --force-with-lease= --recurse-submodules=
|
||||
"
|
||||
return
|
||||
;;
|
||||
|
|
@ -1621,7 +1669,10 @@ _git_push ()
|
|||
_git_rebase ()
|
||||
{
|
||||
local dir="$(__gitdir)"
|
||||
if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
|
||||
if [ -f "$dir"/rebase-merge/interactive ]; then
|
||||
__gitcomp "--continue --skip --abort --edit-todo"
|
||||
return
|
||||
elif [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
|
||||
__gitcomp "--continue --skip --abort"
|
||||
return
|
||||
fi
|
||||
|
|
@ -1637,7 +1688,12 @@ _git_rebase ()
|
|||
--preserve-merges --stat --no-stat
|
||||
--committer-date-is-author-date --ignore-date
|
||||
--ignore-whitespace --whitespace=
|
||||
--autosquash --fork-point --no-fork-point
|
||||
--autosquash --no-autosquash
|
||||
--fork-point --no-fork-point
|
||||
--autostash --no-autostash
|
||||
--verify --no-verify
|
||||
--keep-empty --root --force-rebase --no-ff
|
||||
--exec
|
||||
"
|
||||
|
||||
return
|
||||
|
|
@ -1662,6 +1718,15 @@ __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all"
|
|||
|
||||
_git_send_email ()
|
||||
{
|
||||
case "$prev" in
|
||||
--to|--cc|--bcc|--from)
|
||||
__gitcomp "
|
||||
$(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
|
||||
"
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$cur" in
|
||||
--confirm=*)
|
||||
__gitcomp "
|
||||
|
|
@ -1686,6 +1751,12 @@ _git_send_email ()
|
|||
" "" "${cur##--thread=}"
|
||||
return
|
||||
;;
|
||||
--to=*|--cc=*|--bcc=*|--from=*)
|
||||
__gitcomp "
|
||||
$(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
|
||||
" "" "${cur#--*=}"
|
||||
return
|
||||
;;
|
||||
--*)
|
||||
__gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to
|
||||
--compose --confirm= --dry-run --envelope-sender
|
||||
|
|
@ -1727,15 +1798,7 @@ __git_config_get_set_variables ()
|
|||
c=$((--c))
|
||||
done
|
||||
|
||||
git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null |
|
||||
while read -r line
|
||||
do
|
||||
case "$line" in
|
||||
*.*=*)
|
||||
echo "${line/=*/}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
git --git-dir="$(__gitdir)" config $config_file --name-only --list 2>/dev/null
|
||||
}
|
||||
|
||||
_git_config ()
|
||||
|
|
@ -1750,7 +1813,7 @@ _git_config ()
|
|||
return
|
||||
;;
|
||||
branch.*.rebase)
|
||||
__gitcomp "false true"
|
||||
__gitcomp "false true preserve interactive"
|
||||
return
|
||||
;;
|
||||
remote.pushdefault)
|
||||
|
|
@ -1820,6 +1883,10 @@ _git_config ()
|
|||
__gitcomp "$__git_send_email_suppresscc_options"
|
||||
return
|
||||
;;
|
||||
sendemail.transferencoding)
|
||||
__gitcomp "7bit 8bit quoted-printable base64"
|
||||
return
|
||||
;;
|
||||
--get|--get-all|--unset|--unset-all)
|
||||
__gitcomp_nl "$(__git_config_get_set_variables)"
|
||||
return
|
||||
|
|
@ -1836,6 +1903,7 @@ _git_config ()
|
|||
--get --get-all --get-regexp
|
||||
--add --unset --unset-all
|
||||
--remove-section --rename-section
|
||||
--name-only
|
||||
"
|
||||
return
|
||||
;;
|
||||
|
|
@ -1954,6 +2022,7 @@ _git_config ()
|
|||
color.status.changed
|
||||
color.status.header
|
||||
color.status.nobranch
|
||||
color.status.unmerged
|
||||
color.status.untracked
|
||||
color.status.updated
|
||||
color.ui
|
||||
|
|
@ -1991,6 +2060,7 @@ _git_config ()
|
|||
core.sparseCheckout
|
||||
core.symlinks
|
||||
core.trustctime
|
||||
core.untrackedCache
|
||||
core.warnAmbiguousRefs
|
||||
core.whitespace
|
||||
core.worktree
|
||||
|
|
@ -2065,6 +2135,8 @@ _git_config ()
|
|||
http.noEPSV
|
||||
http.postBuffer
|
||||
http.proxy
|
||||
http.sslCipherList
|
||||
http.sslVersion
|
||||
http.sslCAInfo
|
||||
http.sslCAPath
|
||||
http.sslCert
|
||||
|
|
@ -2128,6 +2200,7 @@ _git_config ()
|
|||
pull.octopus
|
||||
pull.twohead
|
||||
push.default
|
||||
push.followTags
|
||||
rebase.autosquash
|
||||
rebase.stat
|
||||
receive.autogc
|
||||
|
|
@ -2201,12 +2274,7 @@ _git_remote ()
|
|||
__git_complete_remote_or_refspec
|
||||
;;
|
||||
update)
|
||||
local i c='' IFS=$'\n'
|
||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do
|
||||
i="${i#remotes.}"
|
||||
c="$c ${i/ */}"
|
||||
done
|
||||
__gitcomp "$c"
|
||||
__gitcomp "$(__git_get_config_variables "remotes")"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
|
|
@ -2233,6 +2301,11 @@ _git_reset ()
|
|||
|
||||
_git_revert ()
|
||||
{
|
||||
local dir="$(__gitdir)"
|
||||
if [ -f "$dir"/REVERT_HEAD ]; then
|
||||
__gitcomp "--continue --quit --abort"
|
||||
return
|
||||
fi
|
||||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp "--edit --mainline --no-edit --no-commit --signoff"
|
||||
|
|
@ -2287,6 +2360,7 @@ _git_show ()
|
|||
;;
|
||||
--*)
|
||||
__gitcomp "--pretty= --format= --abbrev-commit --oneline
|
||||
--show-signature
|
||||
$__git_diff_common_options
|
||||
"
|
||||
return
|
||||
|
|
@ -2300,7 +2374,7 @@ _git_show_branch ()
|
|||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp "
|
||||
--all --remotes --topo-order --current --more=
|
||||
--all --remotes --topo-order --date-order --current --more=
|
||||
--list --independent --merge-base --no-name
|
||||
--color --no-color
|
||||
--sha1-name --sparse --topics --reflog
|
||||
|
|
@ -2313,7 +2387,7 @@ _git_show_branch ()
|
|||
|
||||
_git_stash ()
|
||||
{
|
||||
local save_opts='--keep-index --no-keep-index --quiet --patch'
|
||||
local save_opts='--all --keep-index --no-keep-index --quiet --patch --include-untracked'
|
||||
local subcommands='save list show apply clear drop pop create branch'
|
||||
local subcommand="$(__git_find_on_cmdline "$subcommands")"
|
||||
if [ -z "$subcommand" ]; then
|
||||
|
|
@ -2335,9 +2409,20 @@ _git_stash ()
|
|||
apply,--*|pop,--*)
|
||||
__gitcomp "--index --quiet"
|
||||
;;
|
||||
show,--*|drop,--*|branch,--*)
|
||||
drop,--*)
|
||||
__gitcomp "--quiet"
|
||||
;;
|
||||
show,*|apply,*|drop,*|pop,*|branch,*)
|
||||
show,--*|branch,--*)
|
||||
;;
|
||||
branch,*)
|
||||
if [ $cword -eq 3 ]; then
|
||||
__gitcomp_nl "$(__git_refs)";
|
||||
else
|
||||
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
|
||||
| sed -n -e 's/:.*//p')"
|
||||
fi
|
||||
;;
|
||||
show,*|apply,*|drop,*|pop,*)
|
||||
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
|
||||
| sed -n -e 's/:.*//p')"
|
||||
;;
|
||||
|
|
@ -2492,6 +2577,16 @@ _git_tag ()
|
|||
__gitcomp_nl "$(__git_refs)"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp "
|
||||
--list --delete --verify --annotate --message --file
|
||||
--sign --cleanup --local-user --force --column --sort
|
||||
--contains --points-at
|
||||
"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_git_whatchanged ()
|
||||
|
|
@ -2547,6 +2642,7 @@ __git_main ()
|
|||
|
||||
local expansion=$(__git_aliased_command "$command")
|
||||
if [ -n "$expansion" ]; then
|
||||
words[1]=$expansion
|
||||
completion_func="_git_${expansion//-/_}"
|
||||
declare -f $completion_func >/dev/null && $completion_func
|
||||
fi
|
||||
|
|
@ -2675,6 +2771,6 @@ __git_complete gitk __gitk_main
|
|||
# when the user has tab-completed the executable name and consequently
|
||||
# included the '.exe' suffix.
|
||||
#
|
||||
if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
|
||||
if [[ "$OSTYPE" = cygwin* ]]; then
|
||||
__git_complete git.exe __git_main
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -66,6 +66,10 @@
|
|||
# git always compare HEAD to @{upstream}
|
||||
# svn always compare HEAD to your SVN upstream
|
||||
#
|
||||
# You can change the separator between the branch name and the above
|
||||
# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
|
||||
# is SP.
|
||||
#
|
||||
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
|
||||
# find one, or @{upstream} otherwise. Once you have set
|
||||
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
|
||||
|
|
@ -84,6 +88,11 @@
|
|||
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
|
||||
# the colored output of "git status -sb" and are available only when
|
||||
# using __git_ps1 for PROMPT_COMMAND or precmd.
|
||||
#
|
||||
# If you would like __git_ps1 to do nothing in the case when the current
|
||||
# directory is set up to be ignored by git, then set
|
||||
# GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
|
||||
# repository level by setting bash.hideIfPwdIgnored to "false".
|
||||
|
||||
# check whether printf supports -v
|
||||
__git_printf_supports_v=
|
||||
|
|
@ -207,7 +216,16 @@ __git_ps1_show_upstream ()
|
|||
p=" u+${count#* }-${count% *}" ;;
|
||||
esac
|
||||
if [[ -n "$count" && -n "$name" ]]; then
|
||||
p="$p $(git rev-parse --abbrev-ref "$upstream" 2>/dev/null)"
|
||||
__git_ps1_upstream_name=$(git rev-parse \
|
||||
--abbrev-ref "$upstream" 2>/dev/null)
|
||||
if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
|
||||
p="$p \${__git_ps1_upstream_name}"
|
||||
else
|
||||
p="$p ${__git_ps1_upstream_name}"
|
||||
# not needed anymore; keep user's
|
||||
# environment clean
|
||||
unset __git_ps1_upstream_name
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -259,9 +277,9 @@ __git_ps1_colorize_gitstring ()
|
|||
r="$c_clear$r"
|
||||
}
|
||||
|
||||
eread ()
|
||||
__git_eread ()
|
||||
{
|
||||
f="$1"
|
||||
local f="$1"
|
||||
shift
|
||||
test -r "$f" && read "$@" <"$f"
|
||||
}
|
||||
|
|
@ -279,6 +297,8 @@ eread ()
|
|||
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
|
||||
__git_ps1 ()
|
||||
{
|
||||
# preserve exit status
|
||||
local exit=$?
|
||||
local pcmode=no
|
||||
local detached=no
|
||||
local ps1pc_start='\u@\h:\w '
|
||||
|
|
@ -290,13 +310,54 @@ __git_ps1 ()
|
|||
ps1pc_start="$1"
|
||||
ps1pc_end="$2"
|
||||
printf_format="${3:-$printf_format}"
|
||||
# set PS1 to a plain prompt so that we can
|
||||
# simply return early if the prompt should not
|
||||
# be decorated
|
||||
PS1="$ps1pc_start$ps1pc_end"
|
||||
;;
|
||||
0|1) printf_format="${1:-$printf_format}"
|
||||
;;
|
||||
*) return
|
||||
*) return $exit
|
||||
;;
|
||||
esac
|
||||
|
||||
# ps1_expanded: This variable is set to 'yes' if the shell
|
||||
# subjects the value of PS1 to parameter expansion:
|
||||
#
|
||||
# * bash does unless the promptvars option is disabled
|
||||
# * zsh does not unless the PROMPT_SUBST option is set
|
||||
# * POSIX shells always do
|
||||
#
|
||||
# If the shell would expand the contents of PS1 when drawing
|
||||
# the prompt, a raw ref name must not be included in PS1.
|
||||
# This protects the user from arbitrary code execution via
|
||||
# specially crafted ref names. For example, a ref named
|
||||
# 'refs/heads/$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' might cause the
|
||||
# shell to execute 'sudo rm -rf /' when the prompt is drawn.
|
||||
#
|
||||
# Instead, the ref name should be placed in a separate global
|
||||
# variable (in the __git_ps1_* namespace to avoid colliding
|
||||
# with the user's environment) and that variable should be
|
||||
# referenced from PS1. For example:
|
||||
#
|
||||
# __git_ps1_foo=$(do_something_to_get_ref_name)
|
||||
# PS1="...stuff...\${__git_ps1_foo}...stuff..."
|
||||
#
|
||||
# If the shell does not expand the contents of PS1, the raw
|
||||
# ref name must be included in PS1.
|
||||
#
|
||||
# The value of this variable is only relevant when in pcmode.
|
||||
#
|
||||
# Assume that the shell follows the POSIX specification and
|
||||
# expands PS1 unless determined otherwise. (This is more
|
||||
# likely to be correct if the user has a non-bash, non-zsh
|
||||
# shell and safer than the alternative if the assumption is
|
||||
# incorrect.)
|
||||
#
|
||||
local ps1_expanded=yes
|
||||
[ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
|
||||
[ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
|
||||
|
||||
local repo_info rev_parse_exit_code
|
||||
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
|
||||
--is-bare-repository --is-inside-work-tree \
|
||||
|
|
@ -304,11 +365,7 @@ __git_ps1 ()
|
|||
rev_parse_exit_code="$?"
|
||||
|
||||
if [ -z "$repo_info" ]; then
|
||||
if [ $pcmode = yes ]; then
|
||||
#In PC mode PS1 always needs to be set
|
||||
PS1="$ps1pc_start$ps1pc_end"
|
||||
fi
|
||||
return
|
||||
return $exit
|
||||
fi
|
||||
|
||||
local short_sha
|
||||
|
|
@ -323,14 +380,22 @@ __git_ps1 ()
|
|||
local inside_gitdir="${repo_info##*$'\n'}"
|
||||
local g="${repo_info%$'\n'*}"
|
||||
|
||||
if [ "true" = "$inside_worktree" ] &&
|
||||
[ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] &&
|
||||
[ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] &&
|
||||
git check-ignore -q .
|
||||
then
|
||||
return $exit
|
||||
fi
|
||||
|
||||
local r=""
|
||||
local b=""
|
||||
local step=""
|
||||
local total=""
|
||||
if [ -d "$g/rebase-merge" ]; then
|
||||
eread "$g/rebase-merge/head-name" b
|
||||
eread "$g/rebase-merge/msgnum" step
|
||||
eread "$g/rebase-merge/end" total
|
||||
__git_eread "$g/rebase-merge/head-name" b
|
||||
__git_eread "$g/rebase-merge/msgnum" step
|
||||
__git_eread "$g/rebase-merge/end" total
|
||||
if [ -f "$g/rebase-merge/interactive" ]; then
|
||||
r="|REBASE-i"
|
||||
else
|
||||
|
|
@ -338,10 +403,10 @@ __git_ps1 ()
|
|||
fi
|
||||
else
|
||||
if [ -d "$g/rebase-apply" ]; then
|
||||
eread "$g/rebase-apply/next" step
|
||||
eread "$g/rebase-apply/last" total
|
||||
__git_eread "$g/rebase-apply/next" step
|
||||
__git_eread "$g/rebase-apply/last" total
|
||||
if [ -f "$g/rebase-apply/rebasing" ]; then
|
||||
eread "$g/rebase-apply/head-name" b
|
||||
__git_eread "$g/rebase-apply/head-name" b
|
||||
r="|REBASE"
|
||||
elif [ -f "$g/rebase-apply/applying" ]; then
|
||||
r="|AM"
|
||||
|
|
@ -365,11 +430,8 @@ __git_ps1 ()
|
|||
b="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||
else
|
||||
local head=""
|
||||
if ! eread "$g/HEAD" head; then
|
||||
if [ $pcmode = yes ]; then
|
||||
PS1="$ps1pc_start$ps1pc_end"
|
||||
fi
|
||||
return
|
||||
if ! __git_eread "$g/HEAD" head; then
|
||||
return $exit
|
||||
fi
|
||||
# is it a symbolic ref?
|
||||
b="${head#ref: }"
|
||||
|
|
@ -414,21 +476,21 @@ __git_ps1 ()
|
|||
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
|
||||
[ "$(git config --bool bash.showDirtyState)" != "false" ]
|
||||
then
|
||||
git diff --no-ext-diff --quiet --exit-code || w="*"
|
||||
if [ -n "$short_sha" ]; then
|
||||
git diff-index --cached --quiet HEAD -- || i="+"
|
||||
else
|
||||
git diff --no-ext-diff --quiet || w="*"
|
||||
git diff --no-ext-diff --cached --quiet || i="+"
|
||||
if [ -z "$short_sha" ] && [ -z "$i" ]; then
|
||||
i="#"
|
||||
fi
|
||||
fi
|
||||
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
|
||||
[ -r "$g/refs/stash" ]; then
|
||||
git rev-parse --verify --quiet refs/stash >/dev/null
|
||||
then
|
||||
s="$"
|
||||
fi
|
||||
|
||||
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
||||
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
|
||||
git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
|
||||
git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
|
||||
then
|
||||
u="%${ZSH_VERSION+%}"
|
||||
fi
|
||||
|
|
@ -440,13 +502,21 @@ __git_ps1 ()
|
|||
|
||||
local z="${GIT_PS1_STATESEPARATOR-" "}"
|
||||
|
||||
# NO color option unless in PROMPT_COMMAND mode
|
||||
if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
||||
__git_ps1_colorize_gitstring
|
||||
# NO color option unless in PROMPT_COMMAND mode or it's Zsh
|
||||
if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
||||
if [ $pcmode = yes ] || [ -n "${ZSH_VERSION-}" ]; then
|
||||
__git_ps1_colorize_gitstring
|
||||
fi
|
||||
fi
|
||||
|
||||
b=${b##refs/heads/}
|
||||
if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
|
||||
__git_ps1_branch_name=$b
|
||||
b="\${__git_ps1_branch_name}"
|
||||
fi
|
||||
|
||||
local f="$w$i$s$u"
|
||||
local gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p"
|
||||
local gitstring="$c$b${f:+$z$f}$r$p"
|
||||
|
||||
if [ $pcmode = yes ]; then
|
||||
if [ "${__git_printf_supports_v-}" != yes ]; then
|
||||
|
|
@ -458,4 +528,6 @@ __git_ps1 ()
|
|||
else
|
||||
printf -- "$printf_format" "$gitstring"
|
||||
fi
|
||||
|
||||
return $exit
|
||||
}
|
||||
|
|
|
|||
46
plugins/github/README.md
Normal file
46
plugins/github/README.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# github
|
||||
|
||||
This plugin supports working with GitHub from the command line. It provides a few things:
|
||||
|
||||
* Sets up the `hub` wrapper and completions for the `git` command if you have `hub` installed.
|
||||
* Completion for the `github` Ruby gem.
|
||||
* Convenience functions for working with repos and URLs.
|
||||
|
||||
### Functions
|
||||
|
||||
* `empty_gh` - Creates a new empty repo (with a `README.md`) and pushes it to GitHub
|
||||
* `new_gh` - Initializes an existing directory as a repo and pushes it to GitHub
|
||||
* `exist_gh` - Takes an existing repo and pushes it to GitHub
|
||||
* `git.io` - Shortens a URL using [git.io](http://git.io)
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
[Hub](http://github.com/github/hub) needs to be installed if you want to use it. On OS X with Homebrew, this can be done with `brew install hub`. The `hub` completion definition needs to be added to your `$FPATH` before initializing OMZ.
|
||||
|
||||
The [`github` Ruby gem](http://github.com/defunkt/github-gem) needs to be installed if you want to use it.
|
||||
|
||||
### Configuration
|
||||
|
||||
These settings affect `github`'s behavior.
|
||||
|
||||
#### Environment variables
|
||||
|
||||
* `$GITHUB_USER`
|
||||
* `$GITHUB_PASSWORD`
|
||||
|
||||
#### Git configuration options
|
||||
|
||||
* `github.user` - GitHub username for repo operations
|
||||
|
||||
See `man hub` for more details.
|
||||
|
||||
### Homebrew installation note
|
||||
|
||||
If you have installed `hub` using Homebrew, its completions may not be on your `$FPATH` if you are using the system `zsh`. Homebrew installs `zsh` completion definitions to `/usr/local/share/zsh/site-functions`, which will be on `$FPATH` for the Homebrew-installed `zsh`, but not for the system `zsh`. If you want it to work with the system `zsh`, add this to your `~/.zshrc` before it sources `oh-my-zsh.sh`.
|
||||
|
||||
```zsh
|
||||
if (( ! ${fpath[(I)/usr/local/share/zsh/site-functions]} )); then
|
||||
FPATH=/usr/local/share/zsh/site-functions:$FPATH
|
||||
fi
|
||||
```
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
#compdef github
|
||||
#autoload
|
||||
|
||||
# in order to make this work, you will need to have the github gem installed
|
||||
# http://github.com/defunkt/github-gem
|
||||
|
||||
# github zsh completion, based on homebrew completion
|
||||
|
||||
local -a _1st_arguments
|
||||
_1st_arguments=(
|
||||
'browse:Open this repo in a web browser'
|
||||
'clone:Clone a repo'
|
||||
'config:Automatically set configuration info, or pass args to specify'
|
||||
'create-from-local:Create a new GitHub repository from the current local repository'
|
||||
'create:Create a new empty GitHub repository'
|
||||
'fetch:Fetch from a remote to a local branch'
|
||||
'fetch_all:Fetch all refs from a user'
|
||||
'fork:Forks a GitHub repository'
|
||||
'home:Open this repos master branch in a web browser'
|
||||
'ignore:Ignore a SHA from github network commits'
|
||||
'info:Info about this project'
|
||||
'issues:Project issues tools'
|
||||
'network:Project network tools - sub-commands : web [user], list, fetch, commits'
|
||||
'open:Open the given user/project in a web browser'
|
||||
'pull-request:Generate the text for a pull request'
|
||||
'pull:Pull from a remote'
|
||||
'search:Search GitHub for the given repository name'
|
||||
'track:Track another users repository'
|
||||
)
|
||||
|
||||
local expl
|
||||
local -a pkgs installed_pkgs
|
||||
|
||||
_arguments \
|
||||
'*:: :->subcmds' && return 0
|
||||
|
||||
if (( CURRENT == 1 )); then
|
||||
_describe -t commands "github subcommand" _1st_arguments
|
||||
return
|
||||
fi
|
||||
163
plugins/github/_hub
Normal file
163
plugins/github/_hub
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
#compdef hub
|
||||
|
||||
# Zsh will source this file when attempting to autoload the "_hub" function,
|
||||
# typically on the first attempt to complete the hub command. We define two new
|
||||
# setup helper routines (one for the zsh-distributed version, one for the
|
||||
# git-distributed, bash-based version). Then we redefine the "_hub" function to
|
||||
# call "_git" after some other interception.
|
||||
#
|
||||
# This is pretty fragile, if you think about it. Any number of implementation
|
||||
# changes in the "_git" scripts could cause problems down the road. It would be
|
||||
# better if the stock git completions were just a bit more permissive about how
|
||||
# it allowed third-party commands to be added.
|
||||
|
||||
(( $+functions[__hub_setup_zsh_fns] )) ||
|
||||
__hub_setup_zsh_fns () {
|
||||
(( $+functions[_git-alias] )) ||
|
||||
_git-alias () {
|
||||
_arguments \
|
||||
'-s[output shell script suitable for eval]' \
|
||||
'1::shell:(zsh bash csh)'
|
||||
}
|
||||
|
||||
(( $+functions[_git-browse] )) ||
|
||||
_git-browse () {
|
||||
_arguments \
|
||||
'-u[output the URL]' \
|
||||
'2::subpage:(wiki commits issues)'
|
||||
}
|
||||
|
||||
(( $+functions[_git-compare] )) ||
|
||||
_git-compare () {
|
||||
_arguments \
|
||||
'-u[output the URL]' \
|
||||
':[start...]end range:'
|
||||
}
|
||||
|
||||
(( $+functions[_git-create] )) ||
|
||||
_git-create () {
|
||||
_arguments \
|
||||
'::name (REPOSITORY or ORGANIZATION/REPOSITORY):' \
|
||||
'-p[make repository private]' \
|
||||
'-d[description]:description' \
|
||||
'-h[home page]:repository home page URL:_urls'
|
||||
}
|
||||
|
||||
(( $+functions[_git-fork] )) ||
|
||||
_git-fork () {
|
||||
_arguments \
|
||||
'--no-remote[do not add a remote for the new fork]'
|
||||
}
|
||||
|
||||
(( $+functions[_git-pull-request] )) ||
|
||||
_git-pull-request () {
|
||||
_arguments \
|
||||
'-f[force (skip check for local commits)]' \
|
||||
'-b[base]:base ("branch", "owner\:branch", "owner/repo\:branch"):' \
|
||||
'-h[head]:head ("branch", "owner\:branch", "owner/repo\:branch"):' \
|
||||
- set1 \
|
||||
'-m[message]' \
|
||||
'-F[file]' \
|
||||
'-a[user]' \
|
||||
'-M[milestone]' \
|
||||
'-l[labels]' \
|
||||
- set2 \
|
||||
'-i[issue]:issue number:' \
|
||||
- set3 \
|
||||
'::issue-url:_urls'
|
||||
}
|
||||
|
||||
# stash the "real" command for later
|
||||
functions[_hub_orig_git_commands]=$functions[_git_commands]
|
||||
|
||||
# Replace it with our own wrapper.
|
||||
declare -f _git_commands >& /dev/null && unfunction _git_commands
|
||||
_git_commands () {
|
||||
local ret=1
|
||||
# call the original routine
|
||||
_call_function ret _hub_orig_git_commands
|
||||
|
||||
# Effectively "append" our hub commands to the behavior of the original
|
||||
# _git_commands function. Using this wrapper function approach ensures
|
||||
# that we only offer the user the hub subcommands when the user is
|
||||
# actually trying to complete subcommands.
|
||||
hub_commands=(
|
||||
alias:'show shell instructions for wrapping git'
|
||||
pull-request:'open a pull request on GitHub'
|
||||
fork:'fork origin repo on GitHub'
|
||||
create:'create new repo on GitHub for the current project'
|
||||
browse:'browse the project on GitHub'
|
||||
compare:'open GitHub compare view'
|
||||
ci-status:'lookup commit in GitHub Status API'
|
||||
)
|
||||
_describe -t hub-commands 'hub command' hub_commands && ret=0
|
||||
|
||||
return ret
|
||||
}
|
||||
}
|
||||
|
||||
(( $+functions[__hub_setup_bash_fns] )) ||
|
||||
__hub_setup_bash_fns () {
|
||||
# TODO more bash-style fns needed here to complete subcommand args. They take
|
||||
# the form "_git_CMD" where "CMD" is something like "pull-request".
|
||||
|
||||
# Duplicate and rename the 'list_all_commands' function
|
||||
eval "$(declare -f __git_list_all_commands | \
|
||||
sed 's/__git_list_all_commands/__git_list_all_commands_without_hub/')"
|
||||
|
||||
# Wrap the 'list_all_commands' function with extra hub commands
|
||||
__git_list_all_commands() {
|
||||
cat <<-EOF
|
||||
alias
|
||||
pull-request
|
||||
fork
|
||||
create
|
||||
browse
|
||||
compare
|
||||
ci-status
|
||||
EOF
|
||||
__git_list_all_commands_without_hub
|
||||
}
|
||||
|
||||
# Ensure cached commands are cleared
|
||||
__git_all_commands=""
|
||||
}
|
||||
|
||||
# redefine _hub to a much smaller function in the steady state
|
||||
_hub () {
|
||||
# only attempt to intercept the normal "_git" helper functions once
|
||||
(( $+__hub_func_replacement_done )) ||
|
||||
() {
|
||||
# At this stage in the shell's execution the "_git" function has not yet
|
||||
# been autoloaded, so the "_git_commands" or "__git_list_all_commands"
|
||||
# functions will not be defined. Call it now (with a bogus no-op service
|
||||
# to prevent premature completion) so that we can wrap them.
|
||||
if declare -f _git >& /dev/null ; then
|
||||
_hub_noop () { __hub_zsh_provided=1 } # zsh-provided will call this one
|
||||
__hub_noop_main () { __hub_git_provided=1 } # git-provided will call this one
|
||||
local service=hub_noop
|
||||
_git
|
||||
unfunction _hub_noop
|
||||
unfunction __hub_noop_main
|
||||
service=git
|
||||
fi
|
||||
|
||||
if (( $__hub_zsh_provided )) ; then
|
||||
__hub_setup_zsh_fns
|
||||
elif (( $__hub_git_provided )) ; then
|
||||
__hub_setup_bash_fns
|
||||
fi
|
||||
|
||||
__hub_func_replacement_done=1
|
||||
}
|
||||
|
||||
# Now perform the actual completion, allowing the "_git" function to call our
|
||||
# replacement "_git_commands" function as needed. Both versions expect
|
||||
# service=git or they will call nonexistent routines or end up in an infinite
|
||||
# loop.
|
||||
service=git
|
||||
declare -f _git >& /dev/null && _git
|
||||
}
|
||||
|
||||
# make sure we actually attempt to complete on the first "tab" from the user
|
||||
_hub
|
||||
|
|
@ -1,56 +1,25 @@
|
|||
# Setup hub function for git, if it is available; http://github.com/defunkt/hub
|
||||
if [ "$commands[(I)hub]" ] && [ "$commands[(I)ruby]" ]; then
|
||||
# Autoload _git completion functions
|
||||
if declare -f _git > /dev/null; then
|
||||
_git
|
||||
fi
|
||||
|
||||
if declare -f _git_commands > /dev/null; then
|
||||
_hub_commands=(
|
||||
'alias:show shell instructions for wrapping git'
|
||||
'pull-request:open a pull request on GitHub'
|
||||
'fork:fork origin repo on GitHub'
|
||||
'create:create new repo on GitHub for the current project'
|
||||
'browse:browse the project on GitHub'
|
||||
'compare:open GitHub compare view'
|
||||
)
|
||||
# Extend the '_git_commands' function with hub commands
|
||||
eval "$(declare -f _git_commands | sed -e 's/base_commands=(/base_commands=(${_hub_commands} /')"
|
||||
fi
|
||||
# eval `hub alias -s zsh`
|
||||
function git(){
|
||||
if ! (( $+_has_working_hub )); then
|
||||
hub --version &> /dev/null
|
||||
_has_working_hub=$(($? == 0))
|
||||
fi
|
||||
if (( $_has_working_hub )) ; then
|
||||
hub "$@"
|
||||
else
|
||||
command git "$@"
|
||||
fi
|
||||
}
|
||||
# Set up hub wrapper for git, if it is available; http://github.com/github/hub
|
||||
if [ "$commands[(I)hub]" ]; then
|
||||
if hub --version &>/dev/null; then
|
||||
eval $(hub alias -s zsh)
|
||||
fi
|
||||
fi
|
||||
|
||||
# Functions #################################################################
|
||||
|
||||
# https://github.com/dbb
|
||||
# Based on https://github.com/dbb/githome/blob/master/.config/zsh/functions
|
||||
|
||||
|
||||
# empty_gh [NAME_OF_REPO]
|
||||
# empty_gh <NAME_OF_REPO>
|
||||
#
|
||||
# Use this when creating a new repo from scratch.
|
||||
# Creates a new repo with a blank README.md in it and pushes it up to GitHub.
|
||||
empty_gh() { # [NAME_OF_REPO]
|
||||
repo=$1
|
||||
ghuser=$( git config github.user )
|
||||
emulate -L zsh
|
||||
local repo=$1
|
||||
|
||||
mkdir "$repo"
|
||||
cd "$repo"
|
||||
git init
|
||||
touch README
|
||||
git add README
|
||||
git commit -m 'Initial commit.'
|
||||
git remote add origin git@github.com:${ghuser}/${repo}.git
|
||||
git push -u origin master
|
||||
mkdir "$repo"
|
||||
touch "$repo/README.md"
|
||||
new_gh "$repo"
|
||||
}
|
||||
|
||||
# new_gh [DIRECTORY]
|
||||
|
|
@ -58,16 +27,25 @@ empty_gh() { # [NAME_OF_REPO]
|
|||
# Use this when you have a directory that is not yet set up for git.
|
||||
# This function will add all non-hidden files to git.
|
||||
new_gh() { # [DIRECTORY]
|
||||
cd "$1"
|
||||
ghuser=$( git config github.user )
|
||||
emulate -L zsh
|
||||
local repo="$1"
|
||||
cd "$repo" \
|
||||
|| return
|
||||
|
||||
git init
|
||||
# add all non-dot files
|
||||
print '.*'"\n"'*~' >> .gitignore
|
||||
git add ^.*
|
||||
git commit -m 'Initial commit.'
|
||||
git remote add origin git@github.com:${ghuser}/${repo}.git
|
||||
git push -u origin master
|
||||
git init \
|
||||
|| return
|
||||
# add all non-dot files
|
||||
print '.*'"\n"'*~' >> .gitignore
|
||||
git add [^.]* \
|
||||
|| return
|
||||
git add .gitignore \
|
||||
|| return
|
||||
git commit -m 'Initial commit.' \
|
||||
|| return
|
||||
hub create \
|
||||
|| return
|
||||
git push -u origin master \
|
||||
|| return
|
||||
}
|
||||
|
||||
# exist_gh [DIRECTORY]
|
||||
|
|
@ -75,13 +53,13 @@ new_gh() { # [DIRECTORY]
|
|||
# Use this when you have a git repo that's ready to go and you want to add it
|
||||
# to your GitHub.
|
||||
exist_gh() { # [DIRECTORY]
|
||||
cd "$1"
|
||||
name=$( git config user.name )
|
||||
ghuser=$( git config github.user )
|
||||
repo=$1
|
||||
emulate -L zsh
|
||||
local repo=$1
|
||||
cd "$repo"
|
||||
|
||||
git remote add origin git@github.com:${ghuser}/${repo}.git
|
||||
git push -u origin master
|
||||
hub create \
|
||||
|| return
|
||||
git push -u origin master
|
||||
}
|
||||
|
||||
# git.io "GitHub URL"
|
||||
|
|
@ -91,7 +69,10 @@ exist_gh() { # [DIRECTORY]
|
|||
# source: https://github.com/nvogel/dotzsh
|
||||
# documentation: https://github.com/blog/985-git-io-github-url-shortener
|
||||
#
|
||||
git.io() {curl -i -s http://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " "}
|
||||
git.io() {
|
||||
emulate -L zsh
|
||||
curl -i -s https://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " "
|
||||
}
|
||||
|
||||
# End Functions #############################################################
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
function gi() { curl -sL https://www.gitignore.io/api/$@ ;}
|
||||
function gi() { curl -sL https://www.gitignore.io/api/${(j:,:)@} }
|
||||
|
||||
_gitignoreio_get_command_list() {
|
||||
curl -sL https://www.gitignore.io/api/list | tr "," "\n"
|
||||
|
|
|
|||
62
plugins/globalias/README.md
Normal file
62
plugins/globalias/README.md
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
# Globalias plugin
|
||||
|
||||
Expands all glob expressions, subcommands and aliases (including global).
|
||||
|
||||
Idea from: http://blog.patshead.com/2012/11/automatically-expaning-zsh-global-aliases---simplified.html.
|
||||
|
||||
## Usage
|
||||
|
||||
Add `globalias` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... globalias)
|
||||
```
|
||||
|
||||
Then just press `SPACE` to trigger the expansion of a command you've written.
|
||||
|
||||
If you only want to insert a space without expanding the command line, press
|
||||
`CTRL`+`SPACE`.
|
||||
|
||||
## Examples
|
||||
|
||||
#### Glob expressions
|
||||
|
||||
```
|
||||
$ touch {1..10}<space>
|
||||
# expands to
|
||||
$ touch 1 2 3 4 5 6 7 8 9 10
|
||||
|
||||
$ ls **/*.json<space>
|
||||
# expands to
|
||||
$ ls folder/file.json anotherfolder/another.json
|
||||
```
|
||||
|
||||
#### Subcommands
|
||||
|
||||
```
|
||||
$ mkdir "`date -R`"
|
||||
# expands to
|
||||
$ mkdir Tue,\ 04\ Oct\ 2016\ 13:54:03\ +0300
|
||||
|
||||
```
|
||||
|
||||
#### Aliases
|
||||
|
||||
```
|
||||
# .zshrc:
|
||||
alias -g G="| grep --color=auto -P"
|
||||
alias l='ls --color=auto -lah'
|
||||
|
||||
$ l<space>G<space>
|
||||
# expands to
|
||||
$ ls --color=auto -lah | grep --color=auto -P
|
||||
```
|
||||
|
||||
```
|
||||
# .zsrc:
|
||||
alias S="sudo systemctl"
|
||||
|
||||
$ S<space>
|
||||
# expands to:
|
||||
$ sudo systemctl
|
||||
```
|
||||
17
plugins/globalias/globalias.plugin.zsh
Normal file
17
plugins/globalias/globalias.plugin.zsh
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
globalias() {
|
||||
zle _expand_alias
|
||||
zle expand-word
|
||||
zle self-insert
|
||||
}
|
||||
zle -N globalias
|
||||
|
||||
# space expands all aliases, including global
|
||||
bindkey -M emacs " " globalias
|
||||
bindkey -M viins " " globalias
|
||||
|
||||
# control-space to make a normal space
|
||||
bindkey -M emacs "^ " magic-space
|
||||
bindkey -M viins "^ " magic-space
|
||||
|
||||
# normal space during searches
|
||||
bindkey -M isearch " " magic-space
|
||||
|
|
@ -52,7 +52,7 @@ if [[ -x "${commands[gwhoami]}" ]]; then
|
|||
|
||||
#
|
||||
# This method is inflexible since the aliases are at risk of being
|
||||
# overriden resulting in the BSD coreutils being called.
|
||||
# overridden resulting in the BSD coreutils being called.
|
||||
#
|
||||
# (( ${+commands[$gcmd]} )) && \
|
||||
# alias "$gcmd[2,-1]"="${prefix}/${gcmd//"["/"\\["}"
|
||||
|
|
|
|||
|
|
@ -179,5 +179,15 @@ __go_tool_complete() {
|
|||
|
||||
compdef __go_tool_complete go
|
||||
|
||||
# aliases
|
||||
alias gfa='go fmt . ./...'
|
||||
# aliases: go<~>
|
||||
alias gob='go build'
|
||||
alias goc='go clean'
|
||||
alias god='go doc'
|
||||
alias gof='go fmt'
|
||||
alias gofa='go fmt . ./...'
|
||||
alias gog='go get'
|
||||
alias goi='go install'
|
||||
alias gol='go list'
|
||||
alias gor='go run'
|
||||
alias got='go test'
|
||||
alias gov='go vet'
|
||||
|
|
|
|||
1
plugins/gradle/_gradle
Symbolic link
1
plugins/gradle/_gradle
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
gradle.plugin.zsh
|
||||
1
plugins/gradle/_gradlew
Symbolic link
1
plugins/gradle/_gradlew
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
gradle.plugin.zsh
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
#!zsh
|
||||
##############################################################################
|
||||
# A descriptive listing of core Gradle commands
|
||||
# A descriptive listing of core Gradle commands
|
||||
############################################################################
|
||||
function _gradle_core_commands() {
|
||||
local ret=1 state
|
||||
|
|
@ -25,66 +24,142 @@ function _gradle_core_commands() {
|
|||
function _gradle_arguments() {
|
||||
_arguments -C \
|
||||
'-a[Do not rebuild project dependencies]' \
|
||||
'-h[Help]' \
|
||||
'-D[System property]' \
|
||||
'-b[Specifies the build file]' \
|
||||
'-c[Specifies the settings file]' \
|
||||
'-d[Log at the debug level]' \
|
||||
'--gui[Launches the Gradle GUI app]' \
|
||||
'--stop[Stop the Gradle daemon]' \
|
||||
'--daemon[Use the Gradle daemon]' \
|
||||
'--no-daemon[Do not use the Gradle daemon]' \
|
||||
'--no-opt[Do not perform any task optimization]' \
|
||||
'-i[Log at the info level]' \
|
||||
'-m[Dry run]' \
|
||||
'-P[Set a project property]' \
|
||||
'--profile[Profile the build time]' \
|
||||
'-q[Log at the quiet level (only show errors)]' \
|
||||
'-v[Print the Gradle version info]' \
|
||||
'-g[Specifies the Gradle user home directory]' \
|
||||
'-h[Shows a help message]' \
|
||||
'-i[Set log level to INFO]' \
|
||||
'-m[Runs the build with all task actions disabled]' \
|
||||
'-p[Specifies the start directory for Gradle]' \
|
||||
'-q[Log errors only]' \
|
||||
'-s[Print out the stacktrace also for user exceptions]' \
|
||||
'-t[Continuous mode. Automatically re-run build after changes]' \
|
||||
'-u[Don''t search in parent directories for a settings.gradle file]' \
|
||||
'-v[Prints Gradle version info]' \
|
||||
'-x[Specify a task to be excluded]' \
|
||||
'-D[Set a system property]' \
|
||||
'-I[Specifies an initialization script]' \
|
||||
'-P[Sets a project property of the root project]' \
|
||||
'-S[Print out the full (very verbose) stacktrace]' \
|
||||
'--build-file[Specifies the build file]' \
|
||||
'--configure-on-demand[Only relevant projects are configured]' \
|
||||
'--console[Type of console output to generate (plain, auto, or rich)]' \
|
||||
'--continue[Continues task execution after a task failure]' \
|
||||
'--continuous[Continuous mode. Automatically re-run build after changes]' \
|
||||
'--daemon[Use the Gradle Daemon]' \
|
||||
'--debug[Log at the debug level]' \
|
||||
'--dry-run[Runs the build with all task actions disabled]' \
|
||||
'--exclude-task[Specify a task to be excluded]' \
|
||||
'--full-stacktrace[Print out the full (very verbose) stacktrace]' \
|
||||
'--gradle-user-home[Specifies the Gradle user home directory]' \
|
||||
'--gui[Launches the Gradle GUI app (Deprecated)]' \
|
||||
'--help[Shows a help message]' \
|
||||
'--include-build[Run the build as a composite, including the specified build]' \
|
||||
'--info[Set log level to INFO]' \
|
||||
'--init-script[Specifies an initialization script]' \
|
||||
'--max-workers[Set the maximum number of workers that Gradle may use]' \
|
||||
'--no-daemon[Do not use the Gradle Daemon]' \
|
||||
'--no-rebuild[Do not rebuild project dependencies]' \
|
||||
'--no-search-upwards[Don''t search in parent directories for a settings.gradle file]' \
|
||||
'--offline[Build without accessing network resources]' \
|
||||
'--parallel[Build projects in parallel]' \
|
||||
'--profile[Profile build time and create report]' \
|
||||
'--project-cache-dir[Specifies the project-specific cache directory]' \
|
||||
'--project-dir[Specifies the start directory for Gradle]' \
|
||||
'--project-prop[Sets a project property of the root project]' \
|
||||
'--quiet[Log errors only]' \
|
||||
'--recompile-scripts[Forces scripts to be recompiled, bypassing caching]' \
|
||||
'--refresh-dependencies[Refresh the state of dependencies]' \
|
||||
'--rerun-task[Specifies that any task optimization is ignored]' \
|
||||
'--settings-file[Specifies the settings file]' \
|
||||
'--stacktrace[Print out the stacktrace also for user exceptions]' \
|
||||
'--status[Print Gradle Daemon status]' \
|
||||
'--stop[Stop all Gradle Daemons]' \
|
||||
'--system-prop[Set a system property]' \
|
||||
'--version[Prints Gradle version info]' \
|
||||
'*::command:->command' \
|
||||
&& return 0
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Are we in a directory containing a build.gradle file?
|
||||
############################################################################
|
||||
function in_gradle() {
|
||||
if [[ -f build.gradle ]]; then
|
||||
echo 1
|
||||
fi
|
||||
}
|
||||
|
||||
############################################################################## Examine the build.gradle file to see if its
|
||||
# timestamp has changed, and if so, regen
|
||||
# the .gradle_tasks cache file
|
||||
# Examine the build.gradle file to see if its timestamp has changed;
|
||||
# and if so, regenerate the .gradle_tasks cache file
|
||||
############################################################################
|
||||
_gradle_does_task_list_need_generating () {
|
||||
[ ! -f .gradletasknamecache ] && return 0;
|
||||
[ build.gradle -nt .gradletasknamecache ] && return 0;
|
||||
return 1;
|
||||
[[ ! -f .gradletasknamecache ]] || [[ build.gradle -nt .gradletasknamecache ]]
|
||||
}
|
||||
|
||||
##############
|
||||
# Parse the tasks from `gradle(w) tasks --all` and return them to the calling function.
|
||||
# All lines in the output from gradle(w) that are between /^-+$/ and /^\s*$/
|
||||
# are considered to be tasks. If and when gradle adds support for listing tasks
|
||||
# for programmatic parsing, this method can be deprecated.
|
||||
##############
|
||||
_gradle_parse_tasks () {
|
||||
lines_might_be_tasks=false
|
||||
task_name_buffer=""
|
||||
while read -r line; do
|
||||
if [[ $line =~ ^-+$ ]]; then
|
||||
lines_might_be_tasks=true
|
||||
# Empty buffer, because it contains items that are not tasks
|
||||
task_name_buffer=""
|
||||
elif [[ $line =~ ^\s*$ ]]; then
|
||||
if [[ "$lines_might_be_tasks" = true ]]; then
|
||||
# If a newline is found, echo the buffer to the calling function
|
||||
while read -r task; do
|
||||
echo $task | awk '/[a-zA-Z0-9:-]+/ {print $1}'
|
||||
done <<< "$task_name_buffer"
|
||||
# Empty buffer, because we are done with the tasks
|
||||
task_name_buffer=""
|
||||
fi
|
||||
lines_might_be_tasks=false
|
||||
elif [[ "$lines_might_be_tasks" = true ]]; then
|
||||
task_name_buffer="${task_name_buffer}\n${line}"
|
||||
fi
|
||||
done <<< "$1"
|
||||
}
|
||||
|
||||
|
||||
##############
|
||||
# Gradle tasks from subprojects are allowed to be executed without specifying
|
||||
# the subproject; that task will then be called on all subprojects.
|
||||
# gradle(w) tasks --all only lists tasks per subproject, but when autocompleting
|
||||
# we often want to be able to run a specific task on all subprojects, e.g.
|
||||
# "gradle clean".
|
||||
# This function uses the list of tasks from "gradle tasks --all", and for each
|
||||
# line grabs everything after the last ":" and combines that output with the original
|
||||
# output. The combined list is returned as the result of this function.
|
||||
##############
|
||||
_gradle_parse_and_extract_tasks () {
|
||||
# All tasks
|
||||
tasks=$(_gradle_parse_tasks "$1")
|
||||
# Task name without sub project(s) prefix
|
||||
simple_tasks=$(echo $tasks | awk 'BEGIN { FS = ":" } { print $NF }')
|
||||
echo "$tasks\n$simple_tasks"
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
# Discover the gradle tasks by running "gradle tasks --all"
|
||||
############################################################################
|
||||
_gradle_tasks () {
|
||||
if [ in_gradle ]; then
|
||||
if [[ -f build.gradle ]]; then
|
||||
_gradle_arguments
|
||||
if _gradle_does_task_list_need_generating; then
|
||||
gradle tasks --all | grep "^[ ]*[a-zA-Z0-9:]*\ -\ " | sed "s/ - .*$//" | sed "s/[\ ]*//" > .gradletasknamecache
|
||||
_gradle_parse_and_extract_tasks "$(gradle tasks --all)" > .gradletasknamecache
|
||||
fi
|
||||
compadd -X "==== Gradle Tasks ====" `cat .gradletasknamecache`
|
||||
compadd -X "==== Gradle Tasks ====" $(cat .gradletasknamecache)
|
||||
fi
|
||||
}
|
||||
|
||||
_gradlew_tasks () {
|
||||
if [ in_gradle ]; then
|
||||
if [[ -f build.gradle ]]; then
|
||||
_gradle_arguments
|
||||
if _gradle_does_task_list_need_generating; then
|
||||
./gradlew tasks --all | grep "^[ ]*[a-zA-Z0-9:]*\ -\ " | sed "s/ - .*$//" | sed "s/[\ ]*//" > .gradletasknamecache
|
||||
_gradle_parse_and_extract_tasks "$(./gradlew tasks --all)" > .gradletasknamecache
|
||||
fi
|
||||
compadd -X "==== Gradlew Tasks ====" `cat .gradletasknamecache`
|
||||
compadd -X "==== Gradlew Tasks ====" $(cat .gradletasknamecache)
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
@ -94,13 +169,3 @@ _gradlew_tasks () {
|
|||
############################################################################
|
||||
compdef _gradle_tasks gradle
|
||||
compdef _gradlew_tasks gradlew
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Open questions for future improvements:
|
||||
# 1) Should 'gradle tasks' use --all or just the regular set?
|
||||
# 2) Should gradlew use the same approach as gradle?
|
||||
# 3) Should only the " - " be replaced with a colon so it can work
|
||||
# with the richer descriptive method of _arguments?
|
||||
# gradle tasks | grep "^[a-zA-Z0-9]*\ -\ " | sed "s/ - /\:/"
|
||||
#############################################################################
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
#
|
||||
# gulp-autocompletion-zsh
|
||||
#
|
||||
#
|
||||
# Autocompletion for your gulp.js tasks
|
||||
#
|
||||
# Copyright(c) 2014 André König <andre.koenig@posteo.de>
|
||||
# MIT Licensed
|
||||
#
|
||||
#
|
||||
|
||||
#
|
||||
# André König
|
||||
|
|
@ -19,8 +19,8 @@
|
|||
# Grabs all available tasks from the `gulpfile.js`
|
||||
# in the current directory.
|
||||
#
|
||||
function $$gulp_completion() {
|
||||
compls=$(grep -Eo "gulp.task\((['\"](([a-zA-Z0-9]|-)*)['\"],)" gulpfile.js 2>/dev/null | grep -Eo "['\"](([a-zA-Z0-9]|-)*)['\"]" | sed s/"['\"]"//g | sort)"
|
||||
function $$gulp_completion {
|
||||
compls=$(gulp --tasks-simple 2>/dev/null)
|
||||
|
||||
completions=(${=compls})
|
||||
compadd -- $completions
|
||||
|
|
|
|||
|
|
@ -31,6 +31,10 @@ _1st_arguments=(
|
|||
"domains\:add":"add a custom domain to an app"
|
||||
"domains\:remove":"remove a custom domain from an app"
|
||||
"domains\:clear":"remove all custom domains from an app"
|
||||
"features":"list available app features"
|
||||
"features\:disable":"disables a feature"
|
||||
"features\:enable":"enables an feature"
|
||||
"features\:info":"displays additional information about feature"
|
||||
"help":"list available commands or display help for a specific command"
|
||||
"keys":"display keys for the current user"
|
||||
"keys\:add":"add a key for the current user"
|
||||
|
|
@ -144,5 +148,4 @@ _arguments \
|
|||
'(--app)--app[the app name]' \
|
||||
'(--remote)--remote[the remote name]' \
|
||||
'(--help)--help[help about the current command]' \
|
||||
&& return 0
|
||||
|
||||
&& return 0
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
To activate this script, please include it the `plugins` variable within `~/.zshrc`
|
||||
|
||||
`plugins=(git history-substring-search)`
|
||||
|
||||
See the "history-substring-search.zsh" file for more information:
|
||||
|
||||
`sed -n '2,/^$/s/^#//p' history-substring-search.zsh | more`
|
||||
149
plugins/history-substring-search/README.md
Normal file
149
plugins/history-substring-search/README.md
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
zsh-history-substring-search
|
||||
==============================================================================
|
||||
|
||||
This is a clean-room implementation of the [Fish shell][1]'s history search
|
||||
feature, where you can type in any part of any previously entered command
|
||||
and press the UP and DOWN arrow keys to cycle through the matching commands.
|
||||
You can also use K and J in VI mode or ^P and ^N in EMACS mode for the same.
|
||||
|
||||
[1]: http://fishshell.com
|
||||
[2]: http://www.zsh.org/mla/users/2009/msg00818.html
|
||||
[3]: http://sourceforge.net/projects/fizsh/
|
||||
[4]: https://github.com/robbyrussell/oh-my-zsh/pull/215
|
||||
[5]: https://github.com/zsh-users/zsh-history-substring-search
|
||||
[6]: https://github.com/zsh-users/zsh-syntax-highlighting
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Requirements
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
* [ZSH](http://zsh.sourceforge.net) 4.3 or newer
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Usage
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
1. Load this script into your interactive ZSH session:
|
||||
|
||||
% source zsh-history-substring-search.zsh
|
||||
|
||||
If you want to use [zsh-syntax-highlighting][6] along with this script,
|
||||
then make sure that you load it *before* you load this script:
|
||||
|
||||
% source zsh-syntax-highlighting.zsh
|
||||
% source zsh-history-substring-search.zsh
|
||||
|
||||
2. Bind keyboard shortcuts to this script's functions:
|
||||
|
||||
# bind UP and DOWN arrow keys
|
||||
zmodload zsh/terminfo
|
||||
bindkey "$terminfo[kcuu1]" history-substring-search-up
|
||||
bindkey "$terminfo[kcud1]" history-substring-search-down
|
||||
|
||||
# bind UP and DOWN arrow keys (compatibility fallback
|
||||
# for Ubuntu 12.04, Fedora 21, and MacOSX 10.9 users)
|
||||
bindkey '^[[A' history-substring-search-up
|
||||
bindkey '^[[B' history-substring-search-down
|
||||
|
||||
# bind P and N for EMACS mode
|
||||
bindkey -M emacs '^P' history-substring-search-up
|
||||
bindkey -M emacs '^N' history-substring-search-down
|
||||
|
||||
# bind k and j for VI mode
|
||||
bindkey -M vicmd 'k' history-substring-search-up
|
||||
bindkey -M vicmd 'j' history-substring-search-down
|
||||
|
||||
3. Type any part of any previous command and then:
|
||||
|
||||
* Press the UP arrow key to select the nearest command that (1) contains
|
||||
your query and (2) is older than the current command in the command
|
||||
history.
|
||||
|
||||
* Press the DOWN arrow key to select the nearest command that (1)
|
||||
contains your query and (2) is newer than the current command in the
|
||||
command history.
|
||||
|
||||
* Press ^U (the Control and U keys simultaneously) to abort the search.
|
||||
|
||||
4. If a matching command spans more than one line of text, press the LEFT
|
||||
arrow key to move the cursor away from the end of the command, and then:
|
||||
|
||||
* Press the UP arrow key to move the cursor to the line above. When the
|
||||
cursor reaches the first line of the command, pressing the UP arrow
|
||||
key again will cause this script to perform another search.
|
||||
|
||||
* Press the DOWN arrow key to move the cursor to the line below. When
|
||||
the cursor reaches the last line of the command, pressing the DOWN
|
||||
arrow key again will cause this script to perform another search.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Configuration
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
This script defines the following global variables. You may override their
|
||||
default values only after having loaded this script into your ZSH session.
|
||||
|
||||
* HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND is a global variable that defines
|
||||
how the query should be highlighted inside a matching command. Its default
|
||||
value causes this script to highlight using bold, white text on a magenta
|
||||
background. See the "Character Highlighting" section in the zshzle(1) man
|
||||
page to learn about the kinds of values you may assign to this variable.
|
||||
|
||||
* HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND is a global variable that
|
||||
defines how the query should be highlighted when no commands in the
|
||||
history match it. Its default value causes this script to highlight using
|
||||
bold, white text on a red background. See the "Character Highlighting"
|
||||
section in the zshzle(1) man page to learn about the kinds of values you
|
||||
may assign to this variable.
|
||||
|
||||
* HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS is a global variable that defines
|
||||
how the command history will be searched for your query. Its default value
|
||||
causes this script to perform a case-insensitive search. See the "Globbing
|
||||
Flags" section in the zshexpn(1) man page to learn about the kinds of
|
||||
values you may assign to this variable.
|
||||
|
||||
To always receive _unique_ search results, use `setopt HIST_IGNORE_ALL_DUPS`.
|
||||
Alternatively, use `setopt HIST_FIND_NO_DUPS` which makes this plugin skip
|
||||
duplicate _adjacent_ search results as you cycle through them---however, this
|
||||
does not guarantee that search results are unique: if your search results were
|
||||
"Dog", "Dog", "HotDog", "Dog", then cycling them gives "Dog", "HotDog", "Dog".
|
||||
Notice that the "Dog" search result appeared twice as you cycled through them!
|
||||
If you wish to avoid this limitation, then use `setopt HIST_IGNORE_ALL_DUPS`.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
History
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
This script was originally written by [Peter Stephenson][2], who published it
|
||||
to the ZSH users mailing list (thereby making it public domain) in September
|
||||
2009. It was later revised by Guido van Steen and released under the BSD
|
||||
license (see below) as part of [the fizsh project][3] in January 2011.
|
||||
|
||||
It was later extracted from fizsh release 1.0.1, refactored heavily, and
|
||||
repackaged as both an [oh-my-zsh plugin][4] and as an independently loadable
|
||||
[ZSH script][5] by Suraj N. Kurapati in 2011.
|
||||
|
||||
It was [further developed][4] by Guido van Steen, Suraj N. Kurapati, Sorin
|
||||
Ionescu, and Vincent Guerci in 2011.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Oh My Zsh Distribution Notes
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
What you are looking at now is Oh My Zsh's repackaging of zsh-history-substring-search
|
||||
as an OMZ module inside the Oh My Zsh distribution.
|
||||
|
||||
The upstream repo, zsh-users/zsh-history-substring-search, can be found on GitHub at
|
||||
https://github.com/zsh-users/zsh-history-substring-search.
|
||||
|
||||
This downstream copy was last updated from the following upstream commit:
|
||||
|
||||
SHA: 2c295432175990c1bb4e90bc13f609daa67a25d6
|
||||
Commit date: 2015-09-28 10:47:34 -0700
|
||||
|
||||
Everything above this section is a copy of the original upstream's README, so things
|
||||
may differ slightly when you're using this inside OMZ. In particular, you do not
|
||||
need to set up key bindings for the up and down arrows yourself in `~/.zshrc`; the OMZ
|
||||
plugin does that for you. You may still want to set up additional emacs- or vi-specific
|
||||
bindings as mentioned above.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue