mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-02-13 03:01:32 +01:00
Merge branch 'master' of github.com:robbyrussell/oh-my-zsh
This commit is contained in:
commit
348ed45318
69 changed files with 2527 additions and 133 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -1,9 +1,9 @@
|
||||||
locals.zsh
|
locals.zsh
|
||||||
log/.zsh_history
|
log/.zsh_history
|
||||||
projects.zsh
|
projects.zsh
|
||||||
custom/*
|
-custom/*
|
||||||
!custom/example
|
-!custom/example
|
||||||
!custom/example.zsh
|
-!custom/example.zsh
|
||||||
*.swp
|
*.swp
|
||||||
!custom/example.zshcache
|
!custom/example.zshcache
|
||||||
cache/
|
cache/
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
!https://s3.amazonaws.com/ohmyzsh/oh-my-zsh-logo.png!
|
||||||
|
|
||||||
oh-my-zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and few things that make you shout...
|
oh-my-zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and few things that make you shout...
|
||||||
|
|
||||||
bq. "OH MY ZSHELL!"
|
bq. "OH MY ZSHELL!"
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ alias history='fc -l 1'
|
||||||
|
|
||||||
# List direcory contents
|
# List direcory contents
|
||||||
alias lsa='ls -lah'
|
alias lsa='ls -lah'
|
||||||
#alias l='ls -la'
|
alias l='ls -la'
|
||||||
alias ll='ls -l'
|
alias ll='ls -l'
|
||||||
alias la='ls -lA'
|
alias la='ls -lA'
|
||||||
alias sl=ls # often screw this up
|
alias sl=ls # often screw this up
|
||||||
|
|
|
||||||
28
lib/git.zsh
28
lib/git.zsh
|
|
@ -1,7 +1,7 @@
|
||||||
# get the name of the branch we are on
|
# get the name of the branch we are on
|
||||||
function git_prompt_info() {
|
function git_prompt_info() {
|
||||||
ref=$(git symbolic-ref HEAD 2> /dev/null) || \
|
ref=$(command git symbolic-ref HEAD 2> /dev/null) || \
|
||||||
ref=$(git rev-parse --short HEAD 2> /dev/null) || return
|
ref=$(command git rev-parse --short HEAD 2> /dev/null) || return
|
||||||
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -11,14 +11,14 @@ parse_git_dirty() {
|
||||||
local SUBMODULE_SYNTAX=''
|
local SUBMODULE_SYNTAX=''
|
||||||
local GIT_STATUS=''
|
local GIT_STATUS=''
|
||||||
local CLEAN_MESSAGE='nothing to commit (working directory clean)'
|
local CLEAN_MESSAGE='nothing to commit (working directory clean)'
|
||||||
if [[ "$(git config --get oh-my-zsh.hide-status)" != "1" ]]; then
|
if [[ "$(command git config --get oh-my-zsh.hide-status)" != "1" ]]; then
|
||||||
if [[ $POST_1_7_2_GIT -gt 0 ]]; then
|
if [[ $POST_1_7_2_GIT -gt 0 ]]; then
|
||||||
SUBMODULE_SYNTAX="--ignore-submodules=dirty"
|
SUBMODULE_SYNTAX="--ignore-submodules=dirty"
|
||||||
fi
|
fi
|
||||||
if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
|
if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
|
||||||
GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null | tail -n1)
|
GIT_STATUS=$(command git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null | tail -n1)
|
||||||
else
|
else
|
||||||
GIT_STATUS=$(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
|
GIT_STATUS=$(command git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
|
||||||
fi
|
fi
|
||||||
if [[ -n $GIT_STATUS ]]; then
|
if [[ -n $GIT_STATUS ]]; then
|
||||||
echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
|
echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
|
||||||
|
|
@ -32,10 +32,10 @@ parse_git_dirty() {
|
||||||
|
|
||||||
# get the difference between the local and remote branches
|
# get the difference between the local and remote branches
|
||||||
git_remote_status() {
|
git_remote_status() {
|
||||||
remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/}
|
remote=${$(command git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/}
|
||||||
if [[ -n ${remote} ]] ; then
|
if [[ -n ${remote} ]] ; then
|
||||||
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
|
ahead=$(command git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
|
||||||
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
|
behind=$(command git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
|
||||||
|
|
||||||
if [ $ahead -eq 0 ] && [ $behind -gt 0 ]
|
if [ $ahead -eq 0 ] && [ $behind -gt 0 ]
|
||||||
then
|
then
|
||||||
|
|
@ -52,24 +52,24 @@ git_remote_status() {
|
||||||
|
|
||||||
# Checks if there are commits ahead from remote
|
# Checks if there are commits ahead from remote
|
||||||
function git_prompt_ahead() {
|
function git_prompt_ahead() {
|
||||||
if $(echo "$(git log origin/$(current_branch)..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then
|
if $(echo "$(command git log origin/$(current_branch)..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then
|
||||||
echo "$ZSH_THEME_GIT_PROMPT_AHEAD"
|
echo "$ZSH_THEME_GIT_PROMPT_AHEAD"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Formats prompt string for current git commit short SHA
|
# Formats prompt string for current git commit short SHA
|
||||||
function git_prompt_short_sha() {
|
function git_prompt_short_sha() {
|
||||||
SHA=$(git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER"
|
SHA=$(command git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Formats prompt string for current git commit long SHA
|
# Formats prompt string for current git commit long SHA
|
||||||
function git_prompt_long_sha() {
|
function git_prompt_long_sha() {
|
||||||
SHA=$(git rev-parse HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER"
|
SHA=$(command git rev-parse HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get the status of the working tree
|
# Get the status of the working tree
|
||||||
git_prompt_status() {
|
git_prompt_status() {
|
||||||
INDEX=$(git status --porcelain -b 2> /dev/null)
|
INDEX=$(command git status --porcelain -b 2> /dev/null)
|
||||||
STATUS=""
|
STATUS=""
|
||||||
if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then
|
if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then
|
||||||
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"
|
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"
|
||||||
|
|
@ -96,7 +96,7 @@ git_prompt_status() {
|
||||||
elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then
|
elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then
|
||||||
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
|
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
|
||||||
fi
|
fi
|
||||||
if $(git rev-parse --verify refs/stash >/dev/null 2>&1); then
|
if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then
|
||||||
STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS"
|
STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS"
|
||||||
fi
|
fi
|
||||||
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
|
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
|
||||||
|
|
@ -121,7 +121,7 @@ function git_compare_version() {
|
||||||
local INPUT_GIT_VERSION=$1;
|
local INPUT_GIT_VERSION=$1;
|
||||||
local INSTALLED_GIT_VERSION
|
local INSTALLED_GIT_VERSION
|
||||||
INPUT_GIT_VERSION=(${(s/./)INPUT_GIT_VERSION});
|
INPUT_GIT_VERSION=(${(s/./)INPUT_GIT_VERSION});
|
||||||
INSTALLED_GIT_VERSION=($(git --version 2>/dev/null));
|
INSTALLED_GIT_VERSION=($(command git --version 2>/dev/null));
|
||||||
INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]});
|
INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]});
|
||||||
|
|
||||||
for i in {1..3}; do
|
for i in {1..3}; do
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,9 @@ function omz_termsupport_preexec {
|
||||||
emulate -L zsh
|
emulate -L zsh
|
||||||
setopt extended_glob
|
setopt extended_glob
|
||||||
local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
|
local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
|
||||||
title "$CMD" "%100>...>${2:gs/%/%%}%<<"
|
local LINE="${2:gs/$/\\$}"
|
||||||
|
LINE="${LINE:gs/%/%%}"
|
||||||
|
title "$CMD" "%100>...>$LINE%<<"
|
||||||
}
|
}
|
||||||
|
|
||||||
autoload -U add-zsh-hook
|
autoload -U add-zsh-hook
|
||||||
|
|
|
||||||
14
oh-my-zsh.sh
14
oh-my-zsh.sh
|
|
@ -38,10 +38,20 @@ for plugin ($plugins); do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Figure out the SHORT hostname
|
||||||
|
if [ -n "$commands[scutil]" ]; then
|
||||||
|
# OS X
|
||||||
|
SHORT_HOST=$(scutil --get ComputerName)
|
||||||
|
else
|
||||||
|
SHORT_HOST=${HOST/.*/}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Save the location of the current completion dump file.
|
||||||
|
ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||||
|
|
||||||
# Load and run compinit
|
# Load and run compinit
|
||||||
autoload -U compinit
|
autoload -U compinit
|
||||||
compinit -i
|
compinit -i -d "${ZSH_COMPDUMP}"
|
||||||
|
|
||||||
|
|
||||||
# Load all of the plugins that were defined in ~/.zshrc
|
# Load all of the plugins that were defined in ~/.zshrc
|
||||||
for plugin ($plugins); do
|
for plugin ($plugins); do
|
||||||
|
|
|
||||||
|
|
@ -2,37 +2,80 @@ alias bi="bower install"
|
||||||
alias bl="bower list"
|
alias bl="bower list"
|
||||||
alias bs="bower search"
|
alias bs="bower search"
|
||||||
|
|
||||||
bower_package_list=''
|
_bower_installed_packages () {
|
||||||
|
bower_package_list=$(bower ls --no-color 2>/dev/null| awk 'NR>3{print p}{p=$0}'| cut -d ' ' -f 2|sed 's/#.*//')
|
||||||
|
}
|
||||||
_bower ()
|
_bower ()
|
||||||
{
|
{
|
||||||
local curcontext="$curcontext" state line
|
local -a _1st_arguments _no_color _dopts _save_dev _force_lastest _production
|
||||||
typeset -A opt_args
|
local expl
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
_arguments -C \
|
_no_color=('--no-color[Do not print colors (available in all commands)]')
|
||||||
':command:->command' \
|
|
||||||
'*::options:->options'
|
|
||||||
|
|
||||||
case $state in
|
_dopts=(
|
||||||
(command)
|
'(--save)--save[Save installed packages into the project"s bower.json dependencies]'
|
||||||
|
'(--force)--force[Force fetching remote resources even if a local copy exists on disk]'
|
||||||
|
)
|
||||||
|
|
||||||
local -a subcommands
|
_save_dev=('(--save-dev)--save-dev[Save installed packages into the project"s bower.json devDependencies]')
|
||||||
subcommands=(${=$(bower help | grep help | sed -e 's/,//g')})
|
|
||||||
_describe -t commands 'bower' subcommands
|
|
||||||
;;
|
|
||||||
|
|
||||||
(options)
|
_force_lastest=('(--force-latest)--force-latest[Force latest version on conflict]')
|
||||||
case $line[1] in
|
|
||||||
|
_production=('(--production)--production[Do not install project devDependencies]')
|
||||||
|
|
||||||
|
_1st_arguments=(
|
||||||
|
'cache-clean:Clean the Bower cache, or the specified package caches' \
|
||||||
|
'help:Display help information about Bower' \
|
||||||
|
'info:Version info and description of a particular package' \
|
||||||
|
'init:Interactively create a bower.json file' \
|
||||||
|
'install:Install a package locally' \
|
||||||
|
'link:Symlink a package folder' \
|
||||||
|
'lookup:Look up a package URL by name' \
|
||||||
|
'register:Register a package' \
|
||||||
|
'search:Search for a package by name' \
|
||||||
|
'uninstall:Remove a package' \
|
||||||
|
'update:Update a package' \
|
||||||
|
{ls,list}:'[List all installed packages]'
|
||||||
|
)
|
||||||
|
_arguments \
|
||||||
|
$_no_color \
|
||||||
|
'*:: :->subcmds' && return 0
|
||||||
|
|
||||||
|
if (( CURRENT == 1 )); then
|
||||||
|
_describe -t commands "bower subcommand" _1st_arguments
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$words[1]" in
|
||||||
|
install)
|
||||||
|
_arguments \
|
||||||
|
$_dopts \
|
||||||
|
$_save_dev \
|
||||||
|
$_force_lastest \
|
||||||
|
$_no_color \
|
||||||
|
$_production
|
||||||
|
;;
|
||||||
|
update)
|
||||||
|
_arguments \
|
||||||
|
$_dopts \
|
||||||
|
$_no_color \
|
||||||
|
$_force_lastest
|
||||||
|
_bower_installed_packages
|
||||||
|
compadd "$@" $(echo $bower_package_list)
|
||||||
|
;;
|
||||||
|
uninstall)
|
||||||
|
_arguments \
|
||||||
|
$_no_color \
|
||||||
|
$_dopts
|
||||||
|
_bower_installed_packages
|
||||||
|
compadd "$@" $(echo $bower_package_list)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
$_no_color \
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
(install)
|
|
||||||
if [ -z "$bower_package_list" ];then
|
|
||||||
bower_package_list=$(bower search | awk 'NR > 2' | cut -d '-' -f 2 | cut -d ' ' -f 2 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")
|
|
||||||
fi
|
|
||||||
compadd "$@" $(echo $bower_package_list)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
compdef _bower bower
|
compdef _bower bower
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ _1st_arguments=(
|
||||||
'missing:check all installed formuale for missing dependencies.'
|
'missing:check all installed formuale for missing dependencies.'
|
||||||
'outdated:list formulas for which a newer version is available'
|
'outdated:list formulas for which a newer version is available'
|
||||||
'prune:remove dead links'
|
'prune:remove dead links'
|
||||||
|
'reinstall:reinstall a formula'
|
||||||
'remove:remove a formula'
|
'remove:remove a formula'
|
||||||
'search:search for a formula (/regex/ or string)'
|
'search:search for a formula (/regex/ or string)'
|
||||||
'server:start a local web app that lets you browse formulae (requires Sinatra)'
|
'server:start a local web app that lets you browse formulae (requires Sinatra)'
|
||||||
|
|
@ -75,7 +76,7 @@ case "$words[1]" in
|
||||||
install|home|homepage|log|info|abv|uses|cat|deps|edit|options|versions)
|
install|home|homepage|log|info|abv|uses|cat|deps|edit|options|versions)
|
||||||
_brew_all_formulae
|
_brew_all_formulae
|
||||||
_wanted formulae expl 'all formulae' compadd -a formulae ;;
|
_wanted formulae expl 'all formulae' compadd -a formulae ;;
|
||||||
remove|rm|uninstall|unlink|cleanup|link|ln)
|
reinstall|remove|rm|uninstall|unlink|cleanup|link|ln)
|
||||||
_brew_installed_formulae
|
_brew_installed_formulae
|
||||||
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
|
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
|
||||||
esac
|
esac
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,25 @@
|
||||||
alias be="bundle exec"
|
alias be="bundle exec"
|
||||||
alias bi="bundle install"
|
|
||||||
alias bl="bundle list"
|
alias bl="bundle list"
|
||||||
alias bp="bundle package"
|
alias bp="bundle package"
|
||||||
alias bo="bundle open"
|
alias bo="bundle open"
|
||||||
alias bu="bundle update"
|
alias bu="bundle update"
|
||||||
|
|
||||||
|
bundler_version=`bundle version | cut -d' ' -f3`
|
||||||
|
if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then
|
||||||
|
if [[ "$(uname)" == 'Darwin' ]]
|
||||||
|
then
|
||||||
|
local cores_num="$(sysctl hw.ncpu | awk '{print $2}')"
|
||||||
|
else
|
||||||
|
local cores_num="$(nproc)"
|
||||||
|
fi
|
||||||
|
eval "alias bi='bundle install --jobs=$cores_num'"
|
||||||
|
else
|
||||||
|
alias bi='bundle install'
|
||||||
|
fi
|
||||||
|
|
||||||
# The following is based on https://github.com/gma/bundler-exec
|
# The following is based on https://github.com/gma/bundler-exec
|
||||||
|
|
||||||
bundled_commands=(annotate cap capify cucumber foreman guard jekyll middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork thin thor unicorn unicorn_rails puma)
|
bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails puma)
|
||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
|
|
@ -42,3 +54,4 @@ for cmd in $bundled_commands; do
|
||||||
compdef _$cmd bundled_$cmd=$cmd
|
compdef _$cmd bundled_$cmd=$cmd
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
||||||
36
plugins/cabal/cabal.plugin.zsh
Normal file
36
plugins/cabal/cabal.plugin.zsh
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
function _cabal_commands() {
|
||||||
|
local ret=1 state
|
||||||
|
_arguments ':subcommand:->subcommand' && ret=0
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
subcommand)
|
||||||
|
subcommands=(
|
||||||
|
"bench:Run the benchmark, if any (configure with UserHooks)"
|
||||||
|
"build:Make this package ready for installation"
|
||||||
|
"check:Check the package for common mistakes"
|
||||||
|
"clean:Clean up after a build"
|
||||||
|
"copy:Copy teh files into the install locations"
|
||||||
|
"configure:Prepare to build the package"
|
||||||
|
"fetch:Downloads packages for later installation"
|
||||||
|
"haddock:Generate HAddock HTML documentation"
|
||||||
|
"help:Help about commands"
|
||||||
|
"hscolour:Generate HsColour colourised code, in HTML format"
|
||||||
|
"info:Display detailed information about a particular package"
|
||||||
|
"init:Interactively create a .cabal file"
|
||||||
|
"install:Installs a list of packages"
|
||||||
|
"list:List packages matching a search string"
|
||||||
|
"register:Register this package with the compiler"
|
||||||
|
"report:Upload build reports to a remote server"
|
||||||
|
"sdist:Generate a source distribution file (.tar.gz)"
|
||||||
|
"test:Run the test suite, if any (configure with UserHooks)"
|
||||||
|
"unpack:Unpacks packages for user inspection"
|
||||||
|
"update:Updates list of known packages"
|
||||||
|
"upload:Uploads source packages to Hackage"
|
||||||
|
)
|
||||||
|
_describe -t subcommands 'cabal subcommands' subcommands && ret=0
|
||||||
|
esac
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
compdef _cabal_commands cabal
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
if [[ -f config/deploy.rb || -f Capfile ]]; then
|
if [[ -f config/deploy.rb || -f Capfile ]]; then
|
||||||
if [[ ! -f .cap_tasks~ || config/deploy.rb -nt .cap_tasks~ ]]; then
|
if [[ ! -f .cap_tasks~ || config/deploy.rb -nt .cap_tasks~ ]]; then
|
||||||
echo "\nGenerating .cap_tasks~..." > /dev/stderr
|
echo "\nGenerating .cap_tasks~..." > /dev/stderr
|
||||||
cap --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~
|
cap -v --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~
|
||||||
fi
|
fi
|
||||||
compadd `cat .cap_tasks~`
|
compadd `cat .cap_tasks~`
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
129
plugins/celery/_celery
Normal file
129
plugins/celery/_celery
Normal file
|
|
@ -0,0 +1,129 @@
|
||||||
|
#compdef celery
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
#celery zsh completion
|
||||||
|
|
||||||
|
_celery () {
|
||||||
|
local -a _1st_arguments ifargs dopts controlargs
|
||||||
|
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_1st_arguments=('worker' 'events' 'beat' 'shell' 'multi' 'amqp' 'status' 'inspect' \
|
||||||
|
'control' 'purge' 'list' 'migrate' 'call' 'result' 'report')
|
||||||
|
ifargs=('--app=' '--broker=' '--loader=' '--config=' '--version')
|
||||||
|
dopts=('--detach' '--umask=' '--gid=' '--uid=' '--pidfile=' '--logfile=' '--loglevel=')
|
||||||
|
controlargs=('--timeout' '--destination')
|
||||||
|
_arguments \
|
||||||
|
'(-A --app=)'{-A,--app}'[app instance to use (e.g. module.attr_name):APP]' \
|
||||||
|
'(-b --broker=)'{-b,--broker}'[url to broker. default is "amqp://guest@localhost//":BROKER]' \
|
||||||
|
'(--loader)--loader[name of custom loader class to use.:LOADER]' \
|
||||||
|
'(--config)--config[Name of the configuration module:CONFIG]' \
|
||||||
|
'(--workdir)--workdir[Optional directory to change to after detaching.:WORKING_DIRECTORY]' \
|
||||||
|
'(-q --quiet)'{-q,--quiet}'[Don"t show as much output.]' \
|
||||||
|
'(-C --no-color)'{-C,--no-color}'[Don"t display colors.]' \
|
||||||
|
'(--version)--version[show program"s version number and exit]' \
|
||||||
|
'(- : *)'{-h,--help}'[show this help message and exit]' \
|
||||||
|
'*:: :->subcmds' && return 0
|
||||||
|
|
||||||
|
if (( CURRENT == 1 )); then
|
||||||
|
_describe -t commands "celery subcommand" _1st_arguments
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$words[1]" in
|
||||||
|
worker)
|
||||||
|
_arguments \
|
||||||
|
'(-C --concurrency=)'{-C,--concurrency=}'[Number of child processes processing the queue. The default is the number of CPUs.]' \
|
||||||
|
'(--pool)--pool=:::(processes eventlet gevent threads solo)' \
|
||||||
|
'(--purge --discard)'{--discard,--purge}'[Purges all waiting tasks before the daemon is started.]' \
|
||||||
|
'(-f --logfile=)'{-f,--logfile=}'[Path to log file. If no logfile is specified, stderr is used.]' \
|
||||||
|
'(--loglevel=)--loglevel=:::(critical error warning info debug)' \
|
||||||
|
'(-N --hostname=)'{-N,--hostname=}'[Set custom hostname, e.g. "foo.example.com".]' \
|
||||||
|
'(-B --beat)'{-B,--beat}'[Also run the celerybeat periodic task scheduler.]' \
|
||||||
|
'(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database if running with the -B option. Defaults to celerybeat-schedule.]' \
|
||||||
|
'(-S --statedb=)'{-S,--statedb=}'[Path to the state database.Default: None]' \
|
||||||
|
'(-E --events)'{-E,--events}'[Send events that can be captured by monitors like celeryev, celerymon, and others.]' \
|
||||||
|
'(--time-limit=)--time-limit=[nables a hard time limit (in seconds int/float) for tasks]' \
|
||||||
|
'(--soft-time-limit=)--soft-time-limit=[Enables a soft time limit (in seconds int/float) for tasks]' \
|
||||||
|
'(--maxtasksperchild=)--maxtasksperchild=[Maximum number of tasks a pool worker can execute before it"s terminated and replaced by a new worker.]' \
|
||||||
|
'(-Q --queues=)'{-Q,--queues=}'[List of queues to enable for this worker, separated by comma. By default all configured queues are enabled.]' \
|
||||||
|
'(-I --include=)'{-I,--include=}'[Comma separated list of additional modules to import.]' \
|
||||||
|
'(--pidfile=)--pidfile=[Optional file used to store the process pid.]' \
|
||||||
|
'(--autoscale=)--autoscale=[Enable autoscaling by providing max_concurrency, min_concurrency.]' \
|
||||||
|
'(--autoreload)--autoreload[Enable autoreloading.]' \
|
||||||
|
'(--no-execv)--no-execv[Don"t do execv after multiprocessing child fork.]'
|
||||||
|
compadd -a ifargs
|
||||||
|
;;
|
||||||
|
inspect)
|
||||||
|
_values -s \
|
||||||
|
'active[dump active tasks (being processed)]' \
|
||||||
|
'active_queues[dump queues being consumed from]' \
|
||||||
|
'ping[ping worker(s)]' \
|
||||||
|
'registered[dump of registered tasks]' \
|
||||||
|
'report[get bugreport info]' \
|
||||||
|
'reserved[dump reserved tasks (waiting to be processed)]' \
|
||||||
|
'revoked[dump of revoked task ids]' \
|
||||||
|
'scheduled[dump scheduled tasks (eta/countdown/retry)]' \
|
||||||
|
'stats[dump worker statistics]'
|
||||||
|
compadd -a controlargs ifargs
|
||||||
|
;;
|
||||||
|
control)
|
||||||
|
_values -s \
|
||||||
|
'add_consumer[tell worker(s) to start consuming a queue]' \
|
||||||
|
'autoscale[change autoscale settings]' \
|
||||||
|
'cancel_consumer[tell worker(s) to stop consuming a queue]' \
|
||||||
|
'disable_events[tell worker(s) to disable events]' \
|
||||||
|
'enable_events[tell worker(s) to enable events]' \
|
||||||
|
'pool_grow[start more pool processes]' \
|
||||||
|
'pool_shrink[use less pool processes]' \
|
||||||
|
'rate_limit[tell worker(s) to modify the rate limit for a task type]' \
|
||||||
|
'time_limit[tell worker(s) to modify the time limit for a task type.]'
|
||||||
|
compadd -a controlargs ifargs
|
||||||
|
;;
|
||||||
|
multi)
|
||||||
|
_values -s \
|
||||||
|
'--nosplash[Don"t display program info.]' \
|
||||||
|
'--verbose[Show more output.]' \
|
||||||
|
'--no-color[Don"t display colors.]' \
|
||||||
|
'--quiet[Don"t show as much output.]' \
|
||||||
|
'start' 'restart' 'stopwait' 'stop' 'show' \
|
||||||
|
'names' 'expand' 'get' 'kill'
|
||||||
|
compadd -a ifargs
|
||||||
|
;;
|
||||||
|
amqp)
|
||||||
|
_values -s \
|
||||||
|
'queue.declare' 'queue.purge' 'exchange.delete' 'basic.publish' \
|
||||||
|
'exchange.declare' 'queue.delete' 'queue.bind' 'basic.get'
|
||||||
|
;;
|
||||||
|
list)
|
||||||
|
_values -s, 'bindings'
|
||||||
|
;;
|
||||||
|
shell)
|
||||||
|
_values -s \
|
||||||
|
'--ipython[force iPython.]' \
|
||||||
|
'--bpython[force bpython.]' \
|
||||||
|
'--python[force default Python shell.]' \
|
||||||
|
'--without-tasks[don"t add tasks to locals.]' \
|
||||||
|
'--eventlet[use eventlet.]' \
|
||||||
|
'--gevent[use gevent.]'
|
||||||
|
compadd -a ifargs
|
||||||
|
;;
|
||||||
|
beat)
|
||||||
|
_arguments \
|
||||||
|
'(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database. Defaults to celerybeat-schedule.]' \
|
||||||
|
'(-S --scheduler=)'{-S,--scheduler=}'[Scheduler class to use. Default is celery.beat.PersistentScheduler.]' \
|
||||||
|
'(--max-interval)--max-interval[]'
|
||||||
|
compadd -a dopts fargs
|
||||||
|
;;
|
||||||
|
events)
|
||||||
|
_arguments \
|
||||||
|
'(-d --dump)'{-d,--dump}'[Dump events to stdout.]' \
|
||||||
|
'(-c --camera=)'{-c,--camera=}'[Take snapshots of events using this camera.]' \
|
||||||
|
'(-F --frequency=)'{-F,--frequency=}'[Camera: Shutter frequency. Default is every 1.0 seconds.]' \
|
||||||
|
'(-r --maxrate=)'{-r,--maxrate=}'[Camera: Optional shutter rate limit (e.g. 10/m).]'
|
||||||
|
compadd -a dopts fargs
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
@ -35,27 +35,37 @@
|
||||||
# -------
|
# -------
|
||||||
#
|
#
|
||||||
# * Mario Fernandez (https://github.com/sirech)
|
# * Mario Fernandez (https://github.com/sirech)
|
||||||
|
# * Dong Weiming (https://github.com/dongweiming)
|
||||||
#
|
#
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
local curcontext="$curcontext" state line ret=1
|
local curcontext="$curcontext" state line ret=1 version opts first second third
|
||||||
typeset -A opt_args
|
typeset -A opt_args
|
||||||
|
version=(${(f)"$(_call_program version $words[1] --version)"})
|
||||||
|
version=${${(z)${version[1]}}[3]}
|
||||||
|
first=$(echo $version|cut -d '.' -f 1)
|
||||||
|
second=$(echo $version|cut -d '.' -f 2)
|
||||||
|
third=$(echo $version|cut -d '.' -f 3)
|
||||||
|
if (( $first < 2 )) && (( $second < 7 )) && (( $third < 3 ));then
|
||||||
|
opts+=('(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]'
|
||||||
|
'(-r --require)'{-r,--require}'[require a library before executing your script]:library')
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
_arguments -C \
|
_arguments -C \
|
||||||
'(- *)'{-h,--help}'[display this help message]' \
|
'(- *)'{-h,--help}'[display this help message]' \
|
||||||
'(- *)'{-v,--version}'[display the version number]' \
|
'(- *)'{-v,--version}'[display the version number]' \
|
||||||
|
$opts \
|
||||||
'(-b --bare)'{-b,--bare}'[compile without a top-level function wrapper]' \
|
'(-b --bare)'{-b,--bare}'[compile without a top-level function wrapper]' \
|
||||||
'(-e --eval)'{-e,--eval}'[pass a string from the command line as input]:Inline Script' \
|
'(-e --eval)'{-e,--eval}'[pass a string from the command line as input]:Inline Script' \
|
||||||
'(-i --interactive)'{-i,--interactive}'[run an interactive CoffeeScript REPL]' \
|
'(-i --interactive)'{-i,--interactive}'[run an interactive CoffeeScript REPL]' \
|
||||||
'(-j --join)'{-j,--join}'[concatenate the source CoffeeScript before compiling]:Destination JS file:_files -g "*.js"' \
|
'(-j --join)'{-j,--join}'[concatenate the source CoffeeScript before compiling]:Destination JS file:_files -g "*.js"' \
|
||||||
'(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]' \
|
|
||||||
'(--nodejs)--nodejs[pass options directly to the "node" binary]' \
|
'(--nodejs)--nodejs[pass options directly to the "node" binary]' \
|
||||||
'(-c --compile)'{-c,--compile}'[compile to JavaScript and save as .js files]' \
|
'(-c --compile)'{-c,--compile}'[compile to JavaScript and save as .js files]' \
|
||||||
'(-o --output)'{-o,--output}'[set the output directory for compiled JavaScript]:Output Directory:_files -/' \
|
'(-o --output)'{-o,--output}'[set the output directory for compiled JavaScript]:Output Directory:_files -/' \
|
||||||
'(-n -t -p)'{-n,--nodes}'[print out the parse tree that the parser produces]' \
|
'(-n -t -p)'{-n,--nodes}'[print out the parse tree that the parser produces]' \
|
||||||
'(-n -t -p)'{-p,--print}'[print out the compiled JavaScript]' \
|
'(-n -t -p)'{-p,--print}'[print out the compiled JavaScript]' \
|
||||||
'(-n -t -p)'{-t,--tokens}'[print out the tokens that the lexer/rewriter produce]' \
|
'(-n -t -p)'{-t,--tokens}'[print out the tokens that the lexer/rewriter produce]' \
|
||||||
'(-r --require)'{-r,--require}'[require a library before executing your script]:library' \
|
|
||||||
'(-s --stdio)'{-s,--stdio}'[listen for and compile scripts over stdio]' \
|
'(-s --stdio)'{-s,--stdio}'[listen for and compile scripts over stdio]' \
|
||||||
'(-w --watch)'{-w,--watch}'[watch scripts for changes and rerun commands]' \
|
'(-w --watch)'{-w,--watch}'[watch scripts for changes and rerun commands]' \
|
||||||
'*:script or directory:_files' && ret=0
|
'*:script or directory:_files' && ret=0
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,25 @@ _composer_get_command_list () {
|
||||||
composer --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }'
|
composer --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_composer_get_required_list () {
|
||||||
|
composer show -s --no-ansi | sed '1,/requires/d' | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }'
|
||||||
|
}
|
||||||
|
|
||||||
_composer () {
|
_composer () {
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
_arguments \
|
||||||
|
'1: :->command'\
|
||||||
|
'*: :->args'
|
||||||
if [ -f composer.json ]; then
|
if [ -f composer.json ]; then
|
||||||
compadd `_composer_get_command_list`
|
case $state in
|
||||||
|
command)
|
||||||
|
compadd `_composer_get_command_list`
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
compadd `_composer_get_required_list`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
compadd create-project init search selfupdate show
|
compadd create-project init search selfupdate show
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,14 @@
|
||||||
|
|
||||||
# Use aptitude if installed, or apt-get if not.
|
# Use aptitude if installed, or apt-get if not.
|
||||||
# You can just set apt_pref='apt-get' to override it.
|
# You can just set apt_pref='apt-get' to override it.
|
||||||
if [[ -e $( which aptitude 2>&1 ) ]]; then
|
if [[ -e $( which -p aptitude 2>&1 ) ]]; then
|
||||||
apt_pref='aptitude'
|
apt_pref='aptitude'
|
||||||
else
|
else
|
||||||
apt_pref='apt-get'
|
apt_pref='apt-get'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use sudo by default if it's installed
|
# Use sudo by default if it's installed
|
||||||
if [[ -e $( which sudo 2>&1 ) ]]; then
|
if [[ -e $( which -p sudo 2>&1 ) ]]; then
|
||||||
use_sudo=1
|
use_sudo=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
19
plugins/docker/README.md
Normal file
19
plugins/docker/README.md
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
## 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))
|
||||||
290
plugins/docker/_docker
Normal file
290
plugins/docker/_docker
Normal file
|
|
@ -0,0 +1,290 @@
|
||||||
|
#compdef docker
|
||||||
|
|
||||||
|
# Docker autocompletion for oh-my-zsh
|
||||||
|
# Requires: Docker installed
|
||||||
|
# Author : Azaan (@aeonazaan)
|
||||||
|
|
||||||
|
|
||||||
|
# ----- Helper functions
|
||||||
|
# Output a selectable list of all running docker containers
|
||||||
|
__docker_containers() {
|
||||||
|
declare -a cont_cmd
|
||||||
|
cont_cmd=($(docker ps | awk 'NR>1{print $1":[CON("$1")"$2"("$3")]"}'))
|
||||||
|
_describe 'containers' cont_cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
# output a selectable list of all docker images
|
||||||
|
__docker_images() {
|
||||||
|
declare -a img_cmd
|
||||||
|
img_cmd=($(docker images | awk 'NR>1{print $1}'))
|
||||||
|
_describe 'images' img_cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----- Commands
|
||||||
|
# Seperate function for each command, makes extension easier later
|
||||||
|
# ---------------------------
|
||||||
|
__attach() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__build() {
|
||||||
|
_arguments \
|
||||||
|
'-q=false[Suppress verbose build output]' \
|
||||||
|
'-t="[fuck to be applied to the resulting image in case of success]' \
|
||||||
|
'*:files:_files'
|
||||||
|
}
|
||||||
|
|
||||||
|
__commit() {
|
||||||
|
_arguments \
|
||||||
|
'-author="[Author]' \
|
||||||
|
'-m="[Commit message]' \
|
||||||
|
'-run="[Config automatically applied when the image is run.\n]'
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__diff() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__export() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__history() {
|
||||||
|
__docker_images
|
||||||
|
}
|
||||||
|
|
||||||
|
__images() {
|
||||||
|
_arguments \
|
||||||
|
'-a[show all images]' \
|
||||||
|
'-notrunc[dont truncate output]' \
|
||||||
|
'-q[only show numeric IDs]' \
|
||||||
|
'-viz[output graph in graphviz format]'
|
||||||
|
__docker_images
|
||||||
|
}
|
||||||
|
|
||||||
|
__import() {
|
||||||
|
_arguments '*:files:_files'
|
||||||
|
}
|
||||||
|
|
||||||
|
__info() {
|
||||||
|
# no arguments
|
||||||
|
}
|
||||||
|
|
||||||
|
__insert() {
|
||||||
|
__docker_images
|
||||||
|
_arguments '*:files:_files'
|
||||||
|
}
|
||||||
|
|
||||||
|
__inspect() {
|
||||||
|
__docker_images
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__kill() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__login() {
|
||||||
|
_arguments \
|
||||||
|
'-e="[email]' \
|
||||||
|
'-p="[password]' \
|
||||||
|
'-u="[username]' \
|
||||||
|
}
|
||||||
|
|
||||||
|
__logs() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__port() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__top() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__ps() {
|
||||||
|
_arguments \
|
||||||
|
'-a[Show all containers. Only running containers are shown by default.]' \
|
||||||
|
'-beforeId="[Show only container created before Id, include non-running ones.]' \
|
||||||
|
'-l[Show only the latest created container, include non-running ones.]' \
|
||||||
|
'-n=[Show n last created containers, include non-running ones.]' \
|
||||||
|
'-notrurrrrnc[Dont truncate output]' \
|
||||||
|
'-q[Only display numeric IDs]' \
|
||||||
|
'-s[Display sizes]' \
|
||||||
|
'-sinceId="[Show only containers created since Id, include non-running ones.]'
|
||||||
|
}
|
||||||
|
|
||||||
|
__pull() {
|
||||||
|
_arguments '-t="[Download tagged image in repository]'
|
||||||
|
}
|
||||||
|
|
||||||
|
__push() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
__restart() {
|
||||||
|
_arguments '-t=[number of seconds to try to stop before killing]'
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__rm() {
|
||||||
|
_arguments '-v[Remove the volumes associated to the container]'
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__rmi() {
|
||||||
|
__docker_images
|
||||||
|
}
|
||||||
|
|
||||||
|
__run() {
|
||||||
|
_arguments \
|
||||||
|
'-a=[Attach to stdin, stdout or stderr.]' \
|
||||||
|
'-c=[CPU shares (relative weight)]' \
|
||||||
|
'-d[Detached mode: leave the container running in the background]' \
|
||||||
|
'-dns=[Set custom dns servers]' \
|
||||||
|
'-e=[Set environment variables]' \
|
||||||
|
'-entrypoint="[Overwrite the default entrypoint of the image]' \
|
||||||
|
'-h="[Container host name]' \
|
||||||
|
'-i[Keep stdin open even if not attached]' \
|
||||||
|
'-m=[Memory limit (in bytes)]' \
|
||||||
|
'-p=[Expose a containers port to the host (use docker port to see the actual mapping)]' \
|
||||||
|
'-t[Allocate a pseudo-tty]' \
|
||||||
|
'-u="[Username or UID]' \
|
||||||
|
'-v=[Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container)]' \
|
||||||
|
'-volumes-from="[Mount volumes from the specified container]'
|
||||||
|
__docker_images
|
||||||
|
}
|
||||||
|
|
||||||
|
__search() {
|
||||||
|
_arguments '-notrunc[Dont truncate output]'
|
||||||
|
}
|
||||||
|
|
||||||
|
__start() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__stop() {
|
||||||
|
_arguments '-t=[number of seconds to try to stop before killing]'
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
__tag() {
|
||||||
|
_arguments '-f[Force]'
|
||||||
|
__docker_images
|
||||||
|
}
|
||||||
|
|
||||||
|
__version() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
__wait() {
|
||||||
|
__docker_containers
|
||||||
|
}
|
||||||
|
|
||||||
|
# end commands ---------
|
||||||
|
# ----------------------
|
||||||
|
|
||||||
|
local -a _1st_arguments
|
||||||
|
_1st_arguments=(
|
||||||
|
"attach":"Attach to a running container"
|
||||||
|
"build":"Build a container from a Dockerfile"
|
||||||
|
"commit":"Create a new image from a container's changes"
|
||||||
|
"diff":"Inspect changes on a container's filesystem"
|
||||||
|
"export":"Stream the contents of a container as a tar archive"
|
||||||
|
"history":"Show the history of an image"
|
||||||
|
"images":"List images"
|
||||||
|
"import":"Create a new filesystem image from the contents of a tarball"
|
||||||
|
"info":"Display system-wide information"
|
||||||
|
"insert":"Insert a file in an image"
|
||||||
|
"inspect":"Return low-level information on a container"
|
||||||
|
"kill":"Kill a running container"
|
||||||
|
"login":"Register or Login to the docker registry server"
|
||||||
|
"logs":"Fetch the logs of a container"
|
||||||
|
"port":"Lookup the public-facing port which is NAT-ed to PRIVATE_PORT"
|
||||||
|
"top":"Lookup the running processes of a container"
|
||||||
|
"ps":"List containers"
|
||||||
|
"pull":"Pull an image or a repository from the docker registry server"
|
||||||
|
"push":"Push an image or a repository to the docker registry server"
|
||||||
|
"restart":"Restart a running container"
|
||||||
|
"rm":"Remove one or more containers"
|
||||||
|
"rmi":"Remove one or more images"
|
||||||
|
"run":"Run a command in a new container"
|
||||||
|
"search":"Search for an image in the docker index"
|
||||||
|
"start":"Start a stopped container"
|
||||||
|
"stop":"Stop a running container"
|
||||||
|
"tag":"Tag an image into a repository"
|
||||||
|
"version":"Show the docker version information"
|
||||||
|
"wait":"Block until a container stops, then print its exit code"
|
||||||
|
)
|
||||||
|
|
||||||
|
_arguments '*:: :->command'
|
||||||
|
|
||||||
|
if (( CURRENT == 1 )); then
|
||||||
|
_describe -t commands "docker command" _1st_arguments
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local -a _command_args
|
||||||
|
case "$words[1]" in
|
||||||
|
attach)
|
||||||
|
__docker_containers ;;
|
||||||
|
build)
|
||||||
|
__build ;;
|
||||||
|
commit)
|
||||||
|
__commit ;;
|
||||||
|
diff)
|
||||||
|
__diff ;;
|
||||||
|
export)
|
||||||
|
__export ;;
|
||||||
|
history)
|
||||||
|
__history ;;
|
||||||
|
images)
|
||||||
|
__images ;;
|
||||||
|
import)
|
||||||
|
__import ;;
|
||||||
|
info)
|
||||||
|
__info ;;
|
||||||
|
insert)
|
||||||
|
__insert ;;
|
||||||
|
inspect)
|
||||||
|
__inspect ;;
|
||||||
|
kill)
|
||||||
|
__kill ;;
|
||||||
|
login)
|
||||||
|
__login ;;
|
||||||
|
logs)
|
||||||
|
__logs ;;
|
||||||
|
port)
|
||||||
|
__port ;;
|
||||||
|
top)
|
||||||
|
__top ;;
|
||||||
|
ps)
|
||||||
|
__ps ;;
|
||||||
|
pull)
|
||||||
|
__pull ;;
|
||||||
|
push)
|
||||||
|
__push ;;
|
||||||
|
restart)
|
||||||
|
__restart ;;
|
||||||
|
rm)
|
||||||
|
__rm ;;
|
||||||
|
rmi)
|
||||||
|
__rmi ;;
|
||||||
|
run)
|
||||||
|
__run ;;
|
||||||
|
search)
|
||||||
|
__search ;;
|
||||||
|
start)
|
||||||
|
__start ;;
|
||||||
|
stop)
|
||||||
|
__stop ;;
|
||||||
|
tag)
|
||||||
|
__tag ;;
|
||||||
|
version)
|
||||||
|
__version ;;
|
||||||
|
wait)
|
||||||
|
__wait ;;
|
||||||
|
esac
|
||||||
|
|
@ -52,7 +52,7 @@ function extract() {
|
||||||
(*.xz) unxz "$1" ;;
|
(*.xz) unxz "$1" ;;
|
||||||
(*.lzma) unlzma "$1" ;;
|
(*.lzma) unlzma "$1" ;;
|
||||||
(*.Z) uncompress "$1" ;;
|
(*.Z) uncompress "$1" ;;
|
||||||
(*.zip) unzip "$1" -d $extract_dir ;;
|
(*.zip|*.war|*.jar) unzip "$1" -d $extract_dir ;;
|
||||||
(*.rar) unrar x -ad "$1" ;;
|
(*.rar) unrar x -ad "$1" ;;
|
||||||
(*.7z) 7za x "$1" ;;
|
(*.7z) 7za x "$1" ;;
|
||||||
(*.deb)
|
(*.deb)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
# Open folder in ForkLift.app from console
|
# Open folder in ForkLift.app of ForkLift2.app from console
|
||||||
# Author: Adam Strzelecki nanoant.com, modified by Bodo Tasche bitboxer.de
|
# Author: Adam Strzelecki nanoant.com, modified by Bodo Tasche bitboxer.de
|
||||||
|
# Updated to support ForkLift2 by Johan Kaving
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# fl [<folder>]
|
# fl [<folder>]
|
||||||
|
|
@ -22,9 +23,33 @@ function fl {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
osascript 2>&1 1>/dev/null <<END
|
osascript 2>&1 1>/dev/null <<END
|
||||||
tell application "ForkLift"
|
|
||||||
activate
|
try
|
||||||
end tell
|
tell application "Finder"
|
||||||
|
set appName to name of application file id "com.binarynights.ForkLift2"
|
||||||
|
end tell
|
||||||
|
on error err_msg number err_num
|
||||||
|
tell application "Finder"
|
||||||
|
set appName to name of application file id "com.binarynights.ForkLift"
|
||||||
|
end tell
|
||||||
|
end try
|
||||||
|
|
||||||
|
if application appName is running
|
||||||
|
tell application appName
|
||||||
|
activate
|
||||||
|
end tell
|
||||||
|
else
|
||||||
|
tell application appName
|
||||||
|
activate
|
||||||
|
end tell
|
||||||
|
repeat until application appName is running
|
||||||
|
delay 1
|
||||||
|
end repeat
|
||||||
|
tell application appName
|
||||||
|
activate
|
||||||
|
end tell
|
||||||
|
end if
|
||||||
|
|
||||||
tell application "System Events"
|
tell application "System Events"
|
||||||
tell application process "ForkLift"
|
tell application process "ForkLift"
|
||||||
try
|
try
|
||||||
|
|
@ -36,7 +61,7 @@ function fl {
|
||||||
keystroke "g" using {command down, shift down}
|
keystroke "g" using {command down, shift down}
|
||||||
tell sheet 1 of topWindow
|
tell sheet 1 of topWindow
|
||||||
set value of text field 1 to "$PWD"
|
set value of text field 1 to "$PWD"
|
||||||
keystroke return
|
keystroke return
|
||||||
end tell
|
end tell
|
||||||
end tell
|
end tell
|
||||||
end tell
|
end tell
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,9 @@ _gem_installed() {
|
||||||
|
|
||||||
local -a _1st_arguments
|
local -a _1st_arguments
|
||||||
_1st_arguments=(
|
_1st_arguments=(
|
||||||
|
'build:Build a gem from a gemspec'
|
||||||
'cert:Manage RubyGems certificates and signing settings'
|
'cert:Manage RubyGems certificates and signing settings'
|
||||||
'check:Check installed gems'
|
'check:Check a gem repository for added or missing files'
|
||||||
'cleanup:Clean up old versions of installed gems in the local repository'
|
'cleanup:Clean up old versions of installed gems in the local repository'
|
||||||
'contents:Display the contents of the installed gems'
|
'contents:Display the contents of the installed gems'
|
||||||
'dependency:Show the dependencies of an installed gem'
|
'dependency:Show the dependencies of an installed gem'
|
||||||
|
|
@ -21,7 +22,7 @@ _1st_arguments=(
|
||||||
'install:Install a gem into the local repository'
|
'install:Install a gem into the local repository'
|
||||||
'list:Display gems whose name starts with STRING'
|
'list:Display gems whose name starts with STRING'
|
||||||
'lock:Generate a lockdown list of gems'
|
'lock:Generate a lockdown list of gems'
|
||||||
'mirror:Mirror a gem repository'
|
'mirror:Mirror all gem files (requires rubygems-mirror)'
|
||||||
'outdated:Display all gems that need updates'
|
'outdated:Display all gems that need updates'
|
||||||
'owner:Manage gem owners on RubyGems.org.'
|
'owner:Manage gem owners on RubyGems.org.'
|
||||||
'pristine:Restores installed gems to pristine condition from files located in the gem cache'
|
'pristine:Restores installed gems to pristine condition from files located in the gem cache'
|
||||||
|
|
@ -35,8 +36,9 @@ _1st_arguments=(
|
||||||
'stale:List gems along with access times'
|
'stale:List gems along with access times'
|
||||||
'uninstall:Uninstall gems from the local repository'
|
'uninstall:Uninstall gems from the local repository'
|
||||||
'unpack:Unpack an installed gem to the current directory'
|
'unpack:Unpack an installed gem to the current directory'
|
||||||
'update:Update the named gems (or all installed gems) in the local repository'
|
'update:Update installed gems to the latest version'
|
||||||
'which:Find the location of a library file you can require'
|
'which:Find the location of a library file you can require'
|
||||||
|
'yank:Remove a specific gem version release from RubyGems.org'
|
||||||
)
|
)
|
||||||
|
|
||||||
local expl
|
local expl
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,12 @@
|
||||||
# c. Or, use this file as a oh-my-zsh plugin.
|
# c. Or, use this file as a oh-my-zsh plugin.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#Alias
|
||||||
|
alias gf='git flow'
|
||||||
|
alias gcd='git checkout develop'
|
||||||
|
alias gch='git checkout hotfix'
|
||||||
|
alias gcr='git checkout release'
|
||||||
|
|
||||||
_git-flow ()
|
_git-flow ()
|
||||||
{
|
{
|
||||||
local curcontext="$curcontext" state line
|
local curcontext="$curcontext" state line
|
||||||
|
|
|
||||||
4
plugins/git/README.md
Normal file
4
plugins/git/README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
## git
|
||||||
|
**Maintainer:** [Stibbons](https://github.com/Stibbons)
|
||||||
|
|
||||||
|
This plugin adds several git aliases and increase the completion function provided by zsh
|
||||||
83
plugins/git/_git-branch
Normal file
83
plugins/git/_git-branch
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
#compdef git-branch
|
||||||
|
|
||||||
|
_git-branch ()
|
||||||
|
{
|
||||||
|
declare l c m d
|
||||||
|
|
||||||
|
l='--color --no-color -r -a --all -v --verbose --abbrev --no-abbrev'
|
||||||
|
c='-l -f --force -t --track --no-track --set-upstream --contains --merged --no-merged'
|
||||||
|
m='-m -M'
|
||||||
|
d='-d -D'
|
||||||
|
|
||||||
|
declare -a dependent_creation_args
|
||||||
|
if (( words[(I)-r] == 0 )); then
|
||||||
|
dependent_creation_args=(
|
||||||
|
"($l $m $d): :__git_branch_names"
|
||||||
|
"::start-point:__git_revisions")
|
||||||
|
fi
|
||||||
|
|
||||||
|
declare -a dependent_deletion_args
|
||||||
|
if (( words[(I)-d] || words[(I)-D] )); then
|
||||||
|
dependent_creation_args=
|
||||||
|
dependent_deletion_args=(
|
||||||
|
'-r[delete only remote-tracking branches]')
|
||||||
|
if (( words[(I)-r] )); then
|
||||||
|
dependent_deletion_args+='*: :__git_ignore_line_inside_arguments __git_remote_branch_names'
|
||||||
|
else
|
||||||
|
dependent_deletion_args+='*: :__git_ignore_line_inside_arguments __git_branch_names'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
declare -a dependent_modification_args
|
||||||
|
if (( words[(I)-m] || words[(I)-M] )); then
|
||||||
|
dependent_creation_args=
|
||||||
|
dependent_modification_args=(
|
||||||
|
':old or new branch name:__git_branch_names'
|
||||||
|
'::new branch name:__git_branch_names')
|
||||||
|
fi
|
||||||
|
|
||||||
|
_arguments -w -S -s \
|
||||||
|
"($c $m $d --no-color :)--color=-[turn on branch coloring]:: :__git_color_whens" \
|
||||||
|
"($c $m $d : --color)--no-color[turn off branch coloring]" \
|
||||||
|
"($c $m -a --all)-r[list or delete only remote-tracking branches]" \
|
||||||
|
"($c $m $d : -r)"{-a,--all}"[list both remote-tracking branches and local branches]" \
|
||||||
|
"($c $m $d : -v --verbose)"{-v,--verbose}'[show SHA1 and commit subject line for each head]' \
|
||||||
|
"($c $m $d :)--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length" \
|
||||||
|
"($c $m $d :)--no-abbrev[do not abbreviate sha1s]" \
|
||||||
|
"($l $m $d)-l[create the branch's reflog]" \
|
||||||
|
"($l $m $d -f --force)"{-f,--force}"[force the creation of a new branch]" \
|
||||||
|
"($l $m $d -t --track)"{-t,--track}"[set up configuration so that pull merges from the start point]" \
|
||||||
|
"($l $m $d)--no-track[override the branch.autosetupmerge configuration variable]" \
|
||||||
|
"($l $m $d)--set-upstream[set up configuration so that pull merges]" \
|
||||||
|
"($l $m $d)--contains=[only list branches which contain the specified commit]: :__git_committishs" \
|
||||||
|
"($l $m $d)--merged=[only list branches which are fully contained by HEAD]: :__git_committishs" \
|
||||||
|
"($l $m $d)--no-merged=[do not list branches which are fully contained by HEAD]: :__git_committishs" \
|
||||||
|
$dependent_creation_args \
|
||||||
|
"($l $c $d -M)-m[rename a branch and the corresponding reflog]" \
|
||||||
|
"($l $c $d -m)-M[rename a branch even if the new branch-name already exists]" \
|
||||||
|
$dependent_modification_args \
|
||||||
|
"($l $c $m -D)-d[delete a fully merged branch]" \
|
||||||
|
"($l $c $m -d)-D[delete a branch]" \
|
||||||
|
$dependent_deletion_args
|
||||||
|
}
|
||||||
|
|
||||||
|
(( $+functions[__git_ignore_line] )) ||
|
||||||
|
__git_ignore_line () {
|
||||||
|
declare -a ignored
|
||||||
|
ignored=()
|
||||||
|
((CURRENT > 1)) &&
|
||||||
|
ignored+=(${line[1,CURRENT-1]//(#m)[\[\]()\\*?#<>~\^]/\\$MATCH})
|
||||||
|
((CURRENT < $#line)) &&
|
||||||
|
ignored+=(${line[CURRENT+1,-1]//(#m)[\[\]()\\*?#<>~\^]/\\$MATCH})
|
||||||
|
$* -F ignored
|
||||||
|
}
|
||||||
|
|
||||||
|
(( $+functions[__git_ignore_line_inside_arguments] )) ||
|
||||||
|
__git_ignore_line_inside_arguments () {
|
||||||
|
declare -a compadd_opts
|
||||||
|
|
||||||
|
zparseopts -D -E -a compadd_opts V: J: 1 2 n f X: M: P: S: r: R: q F:
|
||||||
|
|
||||||
|
__git_ignore_line $* $compadd_opts
|
||||||
|
}
|
||||||
|
|
||||||
74
plugins/git/_git-remote
Normal file
74
plugins/git/_git-remote
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
#compdef git-remote
|
||||||
|
|
||||||
|
# NOTE: --track is undocumented.
|
||||||
|
# TODO: --track, -t, --master, and -m should take remote branches, I guess.
|
||||||
|
# NOTE: --master is undocumented.
|
||||||
|
# NOTE: --fetch is undocumented.
|
||||||
|
_git-remote () {
|
||||||
|
local curcontext=$curcontext state line
|
||||||
|
declare -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options' && ret=0
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
declare -a commands
|
||||||
|
|
||||||
|
commands=(
|
||||||
|
'add:add a new remote'
|
||||||
|
'show:show information about a given remote'
|
||||||
|
'prune:delete all stale tracking branches for a given remote'
|
||||||
|
'update:fetch updates for a set of remotes'
|
||||||
|
'rm:remove a remote from .git/config and all associated tracking branches'
|
||||||
|
'rename:rename a remote from .git/config and update all associated tracking branches'
|
||||||
|
'set-head:sets or deletes the default branch'
|
||||||
|
'set-branches:changes the list of branches tracked by the named remote.'
|
||||||
|
'set-url:changes URL remote points to.'
|
||||||
|
)
|
||||||
|
|
||||||
|
_describe -t commands 'sub-command' commands && ret=0
|
||||||
|
;;
|
||||||
|
(options)
|
||||||
|
case $line[1] in
|
||||||
|
(add)
|
||||||
|
_arguments \
|
||||||
|
'*'{--track,-t}'[track given branch instead of default glob refspec]:branch:__git_branch_names' \
|
||||||
|
'(--master -m)'{--master,-m}'[set the remote'\''s HEAD to point to given master branch]:branch:__git_branch_names' \
|
||||||
|
'(--fetch -f)'{--fetch,-f}'[run git-fetch on the new remote after it has been created]' \
|
||||||
|
':branch name:__git_remotes' \
|
||||||
|
':url:_urls' && ret=0
|
||||||
|
;;
|
||||||
|
(show)
|
||||||
|
_arguments \
|
||||||
|
'-n[do not contact the remote for a list of branches]' \
|
||||||
|
':remote:__git_remotes' && ret=0
|
||||||
|
;;
|
||||||
|
(prune)
|
||||||
|
_arguments \
|
||||||
|
'(--dry-run -n)'{-n,--dry-run}'[do not actually prune, only list what would be done]' \
|
||||||
|
':remote:__git_remotes' && ret=0
|
||||||
|
;;
|
||||||
|
(update)
|
||||||
|
__git_remote-groups && ret=0
|
||||||
|
;;
|
||||||
|
(rm)
|
||||||
|
__git_remotes && ret=0
|
||||||
|
;;
|
||||||
|
(rename)
|
||||||
|
__git_remotes && ret=0
|
||||||
|
;;
|
||||||
|
(set-url)
|
||||||
|
_arguments \
|
||||||
|
'*--push[manipulate push URLs]' \
|
||||||
|
'(--add)--add[add URL]' \
|
||||||
|
'(--delete)--delete[delete URLs]' \
|
||||||
|
':branch name:__git_remotes' \
|
||||||
|
':url:_urls' && ret=0
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
@ -8,6 +8,8 @@ alias gst='git status'
|
||||||
compdef _git gst=git-status
|
compdef _git gst=git-status
|
||||||
alias gd='git diff'
|
alias gd='git diff'
|
||||||
compdef _git gd=git-diff
|
compdef _git gd=git-diff
|
||||||
|
alias gdc='git diff --cached'
|
||||||
|
compdef _git gdc=git-diff
|
||||||
alias gl='git pull'
|
alias gl='git pull'
|
||||||
compdef _git gl=git-pull
|
compdef _git gl=git-pull
|
||||||
alias gup='git pull --rebase'
|
alias gup='git pull --rebase'
|
||||||
|
|
@ -25,6 +27,8 @@ alias gca='git commit -v -a'
|
||||||
compdef _git gc=git-commit
|
compdef _git gc=git-commit
|
||||||
alias gca!='git commit -v -a --amend'
|
alias gca!='git commit -v -a --amend'
|
||||||
compdef _git gca!=git-commit
|
compdef _git gca!=git-commit
|
||||||
|
alias gcmsg='git commit -m'
|
||||||
|
compdef _git gcmsg=git-commit
|
||||||
alias gco='git checkout'
|
alias gco='git checkout'
|
||||||
compdef _git gco=git-checkout
|
compdef _git gco=git-checkout
|
||||||
alias gcm='git checkout master'
|
alias gcm='git checkout master'
|
||||||
|
|
@ -40,6 +44,12 @@ alias grset='git remote set-url'
|
||||||
compdef _git grset=git-remote
|
compdef _git grset=git-remote
|
||||||
alias grup='git remote update'
|
alias grup='git remote update'
|
||||||
compdef _git grset=git-remote
|
compdef _git grset=git-remote
|
||||||
|
alias grbi='git rebase -i'
|
||||||
|
compdef _git grbi=git-rebase
|
||||||
|
alias grbc='git rebase --continue'
|
||||||
|
compdef _git grbc=git-rebase
|
||||||
|
alias grba='git rebase --abort'
|
||||||
|
compdef _git grba=git-rebase
|
||||||
alias gb='git branch'
|
alias gb='git branch'
|
||||||
compdef _git gb=git-branch
|
compdef _git gb=git-branch
|
||||||
alias gba='git branch -a'
|
alias gba='git branch -a'
|
||||||
|
|
@ -49,9 +59,9 @@ compdef gcount=git
|
||||||
alias gcl='git config --list'
|
alias gcl='git config --list'
|
||||||
alias gcp='git cherry-pick'
|
alias gcp='git cherry-pick'
|
||||||
compdef _git gcp=git-cherry-pick
|
compdef _git gcp=git-cherry-pick
|
||||||
alias glg='git log --stat --max-count=5'
|
alias glg='git log --stat --max-count=10'
|
||||||
compdef _git glg=git-log
|
compdef _git glg=git-log
|
||||||
alias glgg='git log --graph --max-count=5'
|
alias glgg='git log --graph --max-count=10'
|
||||||
compdef _git glgg=git-log
|
compdef _git glgg=git-log
|
||||||
alias glgga='git log --graph --decorate --all'
|
alias glgga='git log --graph --decorate --all'
|
||||||
compdef _git glgga=git-log
|
compdef _git glgga=git-log
|
||||||
|
|
@ -65,9 +75,24 @@ alias gm='git merge'
|
||||||
compdef _git gm=git-merge
|
compdef _git gm=git-merge
|
||||||
alias grh='git reset HEAD'
|
alias grh='git reset HEAD'
|
||||||
alias grhh='git reset HEAD --hard'
|
alias grhh='git reset HEAD --hard'
|
||||||
|
alias gclean='git reset --hard && git clean -dfx'
|
||||||
alias gwc='git whatchanged -p --abbrev-commit --pretty=medium'
|
alias gwc='git whatchanged -p --abbrev-commit --pretty=medium'
|
||||||
alias gf='git ls-files | grep'
|
|
||||||
|
#remove the gf alias
|
||||||
|
#alias gf='git ls-files | grep'
|
||||||
|
|
||||||
alias gpoat='git push origin --all && git push origin --tags'
|
alias gpoat='git push origin --all && git push origin --tags'
|
||||||
|
alias gmt='git mergetool --no-prompt'
|
||||||
|
compdef _git gm=git-mergetool
|
||||||
|
|
||||||
|
alias gg='git gui citool'
|
||||||
|
alias gga='git gui citool --amend'
|
||||||
|
alias gk='gitk --all --branches'
|
||||||
|
|
||||||
|
alias gsts='git stash show --text'
|
||||||
|
alias gsta='git stash'
|
||||||
|
alias gstp='git stash pop'
|
||||||
|
alias gstd='git stash drop'
|
||||||
|
|
||||||
# Will cd into the top of the current repository
|
# Will cd into the top of the current repository
|
||||||
# or submodule.
|
# or submodule.
|
||||||
|
|
@ -98,6 +123,8 @@ function current_repository() {
|
||||||
# these aliases take advantage of the previous function
|
# these aliases take advantage of the previous function
|
||||||
alias ggpull='git pull origin $(current_branch)'
|
alias ggpull='git pull origin $(current_branch)'
|
||||||
compdef ggpull=git
|
compdef ggpull=git
|
||||||
|
alias ggpur='git pull --rebase origin $(current_branch)'
|
||||||
|
compdef ggpur=git
|
||||||
alias ggpush='git push origin $(current_branch)'
|
alias ggpush='git push origin $(current_branch)'
|
||||||
compdef ggpush=git
|
compdef ggpush=git
|
||||||
alias ggpnp='git pull origin $(current_branch) && git push origin $(current_branch)'
|
alias ggpnp='git pull origin $(current_branch) && git push origin $(current_branch)'
|
||||||
|
|
@ -111,3 +138,17 @@ function _git_log_prettily(){
|
||||||
}
|
}
|
||||||
alias glp="_git_log_prettily"
|
alias glp="_git_log_prettily"
|
||||||
compdef _git glp=git-log
|
compdef _git glp=git-log
|
||||||
|
|
||||||
|
# Work In Progress (wip)
|
||||||
|
# These features allow to pause a branch development and switch to another one (wip)
|
||||||
|
# When you want to go back to work, just unwip it
|
||||||
|
#
|
||||||
|
# This function return a warning if the current branch is a wip
|
||||||
|
function work_in_progress() {
|
||||||
|
if $(git log -n 1 | grep -q -c wip); then
|
||||||
|
echo "WIP!!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# these alias commit and uncomit wip branches
|
||||||
|
alias gwip='git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m "wip"'
|
||||||
|
alias gunwip='git log -n 1 | grep -q -c wip && git reset HEAD~1'
|
||||||
|
|
|
||||||
12
plugins/gitignore/gitignore.plugin.zsh
Normal file
12
plugins/gitignore/gitignore.plugin.zsh
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
function gi() { curl http://gitignore.io/api/$@ ;}
|
||||||
|
|
||||||
|
_gitignireio_get_command_list() {
|
||||||
|
curl -s http://gitignore.io/api/list | tr "," "\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
_gitignireio () {
|
||||||
|
compset -P '*,'
|
||||||
|
compadd -S '' `_gitignireio_get_command_list`
|
||||||
|
}
|
||||||
|
|
||||||
|
compdef _gitignireio gi
|
||||||
|
|
@ -14,16 +14,27 @@ function start_agent_withssh {
|
||||||
export SSH_AGENT_PID
|
export SSH_AGENT_PID
|
||||||
}
|
}
|
||||||
|
|
||||||
# source settings of old agent, if applicable
|
# check if another agent is running
|
||||||
if [ -f "${GPG_ENV}" ]; then
|
if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
|
||||||
. ${GPG_ENV} > /dev/null
|
# source settings of old agent, if applicable
|
||||||
fi
|
if [ -f "${GPG_ENV}" ]; then
|
||||||
|
. ${GPG_ENV} > /dev/null
|
||||||
|
export GPG_AGENT_INFO
|
||||||
|
export SSH_AUTH_SOCK
|
||||||
|
export SSH_AGENT_PID
|
||||||
|
fi
|
||||||
|
|
||||||
# check for existing ssh-agent
|
# check again if another agent is running using the newly sourced settings
|
||||||
if ssh-add -l > /dev/null 2> /dev/null; then
|
if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
|
||||||
start_agent_nossh;
|
# check for existing ssh-agent
|
||||||
else
|
if ssh-add -l > /dev/null 2> /dev/null; then
|
||||||
start_agent_withssh;
|
# ssh-agent running, start gpg-agent without ssh support
|
||||||
|
start_agent_nossh;
|
||||||
|
else
|
||||||
|
# otherwise start gpg-agent with ssh support
|
||||||
|
start_agent_withssh;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
GPG_TTY=$(tty)
|
GPG_TTY=$(tty)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# .jira-url in the current directory takes precedence
|
# .jira-url in the current directory takes precedence
|
||||||
#
|
#
|
||||||
# If you use Rapid Board, set:
|
# If you use Rapid Board, set:
|
||||||
#JIRA_RAPID_BOARD="yes"
|
#JIRA_RAPID_BOARD="true"
|
||||||
# in you .zshrc
|
# in you .zshrc
|
||||||
#
|
#
|
||||||
# Setup: cd to/my/project
|
# Setup: cd to/my/project
|
||||||
|
|
@ -34,7 +34,7 @@ open_jira_issue () {
|
||||||
`open $jira_url/secure/CreateIssue!default.jspa`
|
`open $jira_url/secure/CreateIssue!default.jspa`
|
||||||
else
|
else
|
||||||
echo "Opening issue #$1"
|
echo "Opening issue #$1"
|
||||||
if [[ "x$JIRA_RAPID_BOARD" = "yes" ]]; then
|
if [[ "x$JIRA_RAPID_BOARD" = "xtrue" ]]; then
|
||||||
$open_cmd "$jira_url/issues/$1"
|
$open_cmd "$jira_url/issues/$1"
|
||||||
else
|
else
|
||||||
$open_cmd "$jira_url/browse/$1"
|
$open_cmd "$jira_url/browse/$1"
|
||||||
|
|
|
||||||
58
plugins/jump/jump.plugin.zsh
Normal file
58
plugins/jump/jump.plugin.zsh
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
# Easily jump around the file system by manually adding marks
|
||||||
|
# marks are stored as symbolic links in the directory $MARKPATH (default $HOME/.marks)
|
||||||
|
#
|
||||||
|
# jump FOO: jump to a mark named FOO
|
||||||
|
# mark FOO: create a mark named FOO
|
||||||
|
# unmark FOO: delete a mark
|
||||||
|
# marks: lists all marks
|
||||||
|
#
|
||||||
|
export MARKPATH=$HOME/.marks
|
||||||
|
|
||||||
|
jump() {
|
||||||
|
cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
mark() {
|
||||||
|
if (( $# == 0 )); then
|
||||||
|
MARK=$(basename "$(pwd)")
|
||||||
|
else
|
||||||
|
MARK="$1"
|
||||||
|
fi
|
||||||
|
if read -q \?"Mark $(pwd) as ${MARK}? (y/n) "; then
|
||||||
|
mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$MARK"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
unmark() {
|
||||||
|
rm -i "$MARKPATH/$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
autoload colors
|
||||||
|
marks() {
|
||||||
|
for link in $MARKPATH/*(@); do
|
||||||
|
local markname="$fg[cyan]${link:t}$reset_color"
|
||||||
|
local markpath="$fg[blue]$(readlink $link)$reset_color"
|
||||||
|
printf "%s\t" $markname
|
||||||
|
printf "-> %s \t\n" $markpath
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
_completemarks() {
|
||||||
|
if [[ $(ls "${MARKPATH}" | wc -l) -gt 1 ]]; then
|
||||||
|
reply=($(ls $MARKPATH/**/*(-) | grep : | sed -E 's/(.*)\/([_\da-zA-Z\-]*):$/\2/g'))
|
||||||
|
else
|
||||||
|
if readlink -e "${MARKPATH}"/* &>/dev/null; then
|
||||||
|
reply=($(ls "${MARKPATH}"))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
compctl -K _completemarks jump
|
||||||
|
compctl -K _completemarks unmark
|
||||||
|
|
||||||
|
_mark_expansion() {
|
||||||
|
setopt extendedglob
|
||||||
|
autoload -U modify-current-argument
|
||||||
|
modify-current-argument '$(readlink "$MARKPATH/$ARG")'
|
||||||
|
}
|
||||||
|
zle -N _mark_expansion
|
||||||
|
bindkey "^g" _mark_expansion
|
||||||
18
plugins/knife_ssh/knife_ssh.plugin.zsh
Normal file
18
plugins/knife_ssh/knife_ssh.plugin.zsh
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
function knife_ssh() {
|
||||||
|
grep -q $1 ~/.knife_comp~ 2> /dev/null || rm -f ~/.knife_comp~;
|
||||||
|
ssh $(knife node show $1 | awk '/IP:/{print $2}')
|
||||||
|
}
|
||||||
|
|
||||||
|
_knife_ssh() {
|
||||||
|
if hash knife 2>/dev/null; then
|
||||||
|
if [[ ! -f ~/.knife_comp~ ]]; then
|
||||||
|
echo "\nGenerating ~/.knife_comp~..." >/dev/stderr
|
||||||
|
knife node list > ~/.knife_comp~
|
||||||
|
fi
|
||||||
|
compadd $(<~/.knife_comp~)
|
||||||
|
else
|
||||||
|
echo "Could not find knife" > /dev/stderr;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
compdef _knife_ssh knife_ssh
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
# Mercurial
|
# Mercurial
|
||||||
alias hgc='hg commit'
|
alias hgc='hg commit'
|
||||||
alias hgb='hg branch'
|
alias hgb='hg branch'
|
||||||
|
|
@ -17,8 +16,48 @@ alias hgs='hg status'
|
||||||
# this is the 'git commit --amend' equivalent
|
# this is the 'git commit --amend' equivalent
|
||||||
alias hgca='hg qimport -r tip ; hg qrefresh -e ; hg qfinish tip'
|
alias hgca='hg qimport -r tip ; hg qrefresh -e ; hg qfinish tip'
|
||||||
|
|
||||||
function hg_current_branch() {
|
function in_hg() {
|
||||||
if [ -d .hg ]; then
|
if [[ -d .hg ]] || $(hg summary > /dev/null 2>&1); then
|
||||||
echo hg:$(hg branch)
|
echo 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hg_get_branch_name() {
|
||||||
|
if [ $(in_hg) ]; then
|
||||||
|
echo $(hg branch)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function hg_prompt_info {
|
||||||
|
if [ $(in_hg) ]; then
|
||||||
|
_DISPLAY=$(hg_get_branch_name)
|
||||||
|
echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_HG_PROMPT_PREFIX\
|
||||||
|
$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_HG_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(hg_dirty)$ZSH_PROMPT_BASE_COLOR"
|
||||||
|
unset _DISPLAY
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function hg_dirty_choose {
|
||||||
|
if [ $(in_hg) ]; then
|
||||||
|
hg status 2> /dev/null | grep -Eq '^\s*[ACDIM!?L]'
|
||||||
|
if [ $pipestatus[-1] -eq 0 ]; then
|
||||||
|
# Grep exits with 0 when "One or more lines were selected", return "dirty".
|
||||||
|
echo $1
|
||||||
|
else
|
||||||
|
# Otherwise, no lines were found, or an error occurred. Return clean.
|
||||||
|
echo $2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function hg_dirty {
|
||||||
|
hg_dirty_choose $ZSH_THEME_HG_PROMPT_DIRTY $ZSH_THEME_HG_PROMPT_CLEAN
|
||||||
|
}
|
||||||
|
|
||||||
|
function hgic() {
|
||||||
|
hg incoming "$@" | grep "changeset" | wc -l
|
||||||
|
}
|
||||||
|
|
||||||
|
function hgoc() {
|
||||||
|
hg outgoing "$@" | grep "changeset" | wc -l
|
||||||
|
}
|
||||||
|
|
|
||||||
63
plugins/mix/_mix
Normal file
63
plugins/mix/_mix
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
#compdef mix
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
# Elixir mix zsh completion
|
||||||
|
|
||||||
|
local -a _1st_arguments
|
||||||
|
_1st_arguments=(
|
||||||
|
'archive:Archive this project into a .ez file'
|
||||||
|
'clean:Clean generated application files'
|
||||||
|
'compile:Compile source files'
|
||||||
|
'deps:List dependencies and their status'
|
||||||
|
"deps.clean:Remove dependencies' files"
|
||||||
|
'deps.compile:Compile dependencies'
|
||||||
|
'deps.get:Get all out of date dependencies'
|
||||||
|
'deps.unlock:Unlock the given dependencies'
|
||||||
|
'deps.update:Update dependencies'
|
||||||
|
'do:Executes the commands separated by comma'
|
||||||
|
'escriptize:Generates an escript for the project'
|
||||||
|
'help:Print help information for tasks'
|
||||||
|
'local:List local tasks'
|
||||||
|
'local.install:Install a task or an archive locally'
|
||||||
|
'local.rebar:Install rebar locally'
|
||||||
|
'local.uninstall:Uninstall local tasks or archives'
|
||||||
|
'new:Creates a new Elixir project'
|
||||||
|
'run:Run the given file or expression'
|
||||||
|
"test:Run a project's tests"
|
||||||
|
'--help:Describe available tasks'
|
||||||
|
'--version:Prints the Elixir version information'
|
||||||
|
)
|
||||||
|
|
||||||
|
__task_list ()
|
||||||
|
{
|
||||||
|
local expl
|
||||||
|
declare -a tasks
|
||||||
|
|
||||||
|
tasks=(archive clean compile deps deps.clean deps.compile deps.get deps.unlock deps.update do escriptize help local local.install local.rebar local.uninstall new run test)
|
||||||
|
|
||||||
|
_wanted tasks expl 'help' compadd $tasks
|
||||||
|
}
|
||||||
|
|
||||||
|
local expl
|
||||||
|
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_describe -t commands "mix subcommand" _1st_arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
(options)
|
||||||
|
case $line[1] in
|
||||||
|
(help)
|
||||||
|
_arguments ':feature:__task_list'
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
2
plugins/mosh/mosh.plugin.zsh
Normal file
2
plugins/mosh/mosh.plugin.zsh
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Allow SSH tab completion for mosh hostnames
|
||||||
|
compdef mosh=ssh
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# Open the node api for your current version to the optional section.
|
# Open the node api for your current version to the optional section.
|
||||||
# TODO: Make the section part easier to use.
|
# TODO: Make the section part easier to use.
|
||||||
function node-docs {
|
function node-docs {
|
||||||
open "http://nodejs.org/docs/$(node --version)/api/all.html#all_$1"
|
# get the open command
|
||||||
|
local open_cmd
|
||||||
|
if [[ $(uname -s) == 'Darwin' ]]; then
|
||||||
|
open_cmd='open'
|
||||||
|
else
|
||||||
|
open_cmd='xdg-open'
|
||||||
|
fi
|
||||||
|
|
||||||
|
$open_cmd "http://nodejs.org/docs/$(node --version)/api/all.html#all_$1"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
26
plugins/nvm/_nvm
Normal file
26
plugins/nvm/_nvm
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
#compdef nvm
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
[[ -s ~/.nvm/nvm.sh ]] || return 0
|
||||||
|
|
||||||
|
local -a _1st_arguments
|
||||||
|
_1st_arguments=(
|
||||||
|
'help:show help'
|
||||||
|
'install:download and install a version'
|
||||||
|
'uninstall:uninstall a version'
|
||||||
|
'use:modify PATH to use version'
|
||||||
|
'run:run version with given arguments'
|
||||||
|
'ls:list installed versions or versions matching a given description'
|
||||||
|
'ls-remote:list remote versions available for install'
|
||||||
|
'deactivate:undo effects of NVM on current shell'
|
||||||
|
'alias:show or set aliases'
|
||||||
|
'unalias:deletes an alias'
|
||||||
|
'copy-packages:install global NPM packages to current version'
|
||||||
|
)
|
||||||
|
|
||||||
|
_arguments -C '*:: :->subcmds' && return 0
|
||||||
|
|
||||||
|
if (( CURRENT == 1 )); then
|
||||||
|
_describe -t commands "nvm subcommand" _1st_arguments
|
||||||
|
return
|
||||||
|
fi
|
||||||
3
plugins/nvm/nvm.plugin.zsh
Normal file
3
plugins/nvm/nvm.plugin.zsh
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# The addition 'nvm install' attempts in ~/.profile
|
||||||
|
|
||||||
|
[[ -s ~/.nvm/nvm.sh ]] && . ~/.nvm/nvm.sh
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
function tab() {
|
function tab() {
|
||||||
local command="cd \\\"$PWD\\\""
|
local command="cd \\\"$PWD\\\"; clear; "
|
||||||
(( $# > 0 )) && command="${command}; $*"
|
(( $# > 0 )) && command="${command}; $*"
|
||||||
|
|
||||||
the_app=$(
|
the_app=$(
|
||||||
|
|
@ -34,7 +34,7 @@ EOF
|
||||||
launch session "Default Session"
|
launch session "Default Session"
|
||||||
set current_session to current session
|
set current_session to current session
|
||||||
tell current_session
|
tell current_session
|
||||||
write text "${command}; clear;"
|
write text "${command}"
|
||||||
end tell
|
end tell
|
||||||
end tell
|
end tell
|
||||||
end tell
|
end tell
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
_pip_all() {
|
_pip_all() {
|
||||||
# we cache the list of packages (originally from the macports plugin)
|
# we cache the list of packages (originally from the macports plugin)
|
||||||
if (( ! $+piplist )); then
|
if (( ! $+piplist )); then
|
||||||
echo -n " (caching package index...)"
|
echo -n " (caching package index...)"
|
||||||
piplist=($(pip search * | cut -d ' ' -f 1 | tr '[A-Z]' '[a-z]'))
|
piplist=($(pip search * | cut -d ' ' -f 1 | tr '[A-Z]' '[a-z]'))
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -62,8 +62,13 @@ case "$words[1]" in
|
||||||
'(--no-install)--no-install[only download packages]' \
|
'(--no-install)--no-install[only download packages]' \
|
||||||
'(--no-download)--no-download[only install downloaded packages]' \
|
'(--no-download)--no-download[only install downloaded packages]' \
|
||||||
'(--install-option)--install-option[extra arguments to be supplied to the setup.py]' \
|
'(--install-option)--install-option[extra arguments to be supplied to the setup.py]' \
|
||||||
|
'(--single-version-externally-managed)--single-version-externally-managed[do not download/install dependencies. requires --record or --root]'\
|
||||||
|
'(--root)--root[treat this path as a fake chroot, installing into it. implies --single-version-externally-managed]'\
|
||||||
|
'(--record)--record[file to record all installed files to.]'\
|
||||||
|
'(-r --requirement)'{-r,--requirement}'[requirements file]: :_files'\
|
||||||
|
'(-e --editable)'{-e,--editable}'[path of or url to source to link to instead of installing.]: :_files -/'\
|
||||||
'1: :->packages' && return 0
|
'1: :->packages' && return 0
|
||||||
|
|
||||||
if [[ "$state" == packages ]]; then
|
if [[ "$state" == packages ]]; then
|
||||||
_pip_all
|
_pip_all
|
||||||
_wanted piplist expl 'packages' compadd -a piplist
|
_wanted piplist expl 'packages' compadd -a piplist
|
||||||
|
|
|
||||||
381
plugins/pod/_pod
Normal file
381
plugins/pod/_pod
Normal file
|
|
@ -0,0 +1,381 @@
|
||||||
|
#compdef pod
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# FILE: _pod
|
||||||
|
# DESCRIPTION: Cocoapods autocomplete plugin for Oh-My-Zsh
|
||||||
|
# http://cocoapods.org
|
||||||
|
# AUTHOR: Alexandre Joly (alexandre.joly@mekanics.ch)
|
||||||
|
# GITHUB: https://github.com/mekanics
|
||||||
|
# TWITTER: @jolyAlexandre
|
||||||
|
# VERSION: 0.0.1
|
||||||
|
# LICENSE: MIT
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local -a _1st_arguments
|
||||||
|
_1st_arguments=(
|
||||||
|
'help:Show help for the given command.'
|
||||||
|
'install:Install project dependencies'
|
||||||
|
'ipc:Inter-process communication'
|
||||||
|
'list:List pods'
|
||||||
|
'outdated:Show outdated project dependencies'
|
||||||
|
'podfile-info:Shows information on installed Pods'
|
||||||
|
'push:Push new specifications to a spec-repo'
|
||||||
|
'repo:Manage spec-repositories'
|
||||||
|
'search:Searches for pods'
|
||||||
|
'setup:Setup the CocoaPods environment'
|
||||||
|
'spec:Manage pod specs'
|
||||||
|
'update:Update outdated project dependencies'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _repo_arguments
|
||||||
|
_repo_arguments=(
|
||||||
|
'add:Add a spec repo'
|
||||||
|
'lint:Validates all specs in a repo'
|
||||||
|
'update:Update a spec repo'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _spec_arguments
|
||||||
|
_spec_arguments=(
|
||||||
|
'cat:Prints a spec file'
|
||||||
|
'create:Create spec file stub'
|
||||||
|
'edit:Edit a spec file'
|
||||||
|
'lint:Validates a spec file'
|
||||||
|
'which:Prints the path of the given spec'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _ipc_arguments
|
||||||
|
_ipc_arguments=(
|
||||||
|
'list:Lists the specifications know to CocoaPods'
|
||||||
|
'podfile:Converts a Podfile to YAML'
|
||||||
|
'repl:The repl listens to commands on standard input'
|
||||||
|
'spec:Converts a podspec to YAML'
|
||||||
|
'update-search-index:Updates the search index'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _list_arguments
|
||||||
|
_list_arguments=(
|
||||||
|
'new:Lists pods introduced in the master spec-repo since the last check'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _inherited_options
|
||||||
|
_inherited_options=(
|
||||||
|
'(--silent)--silent[Show nothing]' \
|
||||||
|
'(--version)--version[Show the version of CocoaPods]' \
|
||||||
|
'(--no-color)--no-color[Show output without color]' \
|
||||||
|
'(--verbose)--verbose[Show more debugging information]' \
|
||||||
|
'(--help)--help[Show help banner of specified command]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _install_options
|
||||||
|
_install_options=(
|
||||||
|
'(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn` intact after downloading]' \
|
||||||
|
'(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
|
||||||
|
'(--no-repo-update)--no-repo-update[Skip running `pod repo update` before install]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _update_options
|
||||||
|
_update_options=(
|
||||||
|
'(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn intact after downloading]' \
|
||||||
|
'(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
|
||||||
|
'(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _outdated_options
|
||||||
|
_outdated_options=(
|
||||||
|
'(--no-repo-update)--no-repo-update[Skip running `pod repo update` before install]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _search_options
|
||||||
|
_search_options=(
|
||||||
|
'(--full)--full[Search by name, summary, and description]' \
|
||||||
|
'(--stats)--stats[Show additional stats (like GitHub watchers and forks)]' \
|
||||||
|
'(--ios)--ios[Restricts the search to Pods supported on iOS]' \
|
||||||
|
'(--osx)--osx[Restricts the search to Pods supported on OS X]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _list_options
|
||||||
|
_list_options=(
|
||||||
|
'(--update)--update[Run `pod repo update` before listing]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _podfile_info_options
|
||||||
|
_podfile_info_options=(
|
||||||
|
'(--all)--all[Show information about all Pods with dependencies that are used in a project]' \
|
||||||
|
'(--md)--md[Output information in Markdown format]' \
|
||||||
|
'*:script or directory:_files'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _push_options
|
||||||
|
_push_options=(
|
||||||
|
'(--allow-warnings)--allow-warnings[Allows pushing even if there are warnings]' \
|
||||||
|
'(--local-only)--local-only[Does not perform the step of pushing REPO to its remote]' \
|
||||||
|
'*:script or directory:_files'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _repo_lint_options
|
||||||
|
_repo_lint_options=(
|
||||||
|
'(--only-errors)--only-errors[Lint presents only the errors]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _setup_options
|
||||||
|
_setup_options=(
|
||||||
|
'(--push)--push[Use this option to enable push access once granted]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _spec_lint_options
|
||||||
|
_spec_lint_options=(
|
||||||
|
'(--quick)--quick[Lint skips checks that would require to download and build the spec]' \
|
||||||
|
'(--only-errors)--only-errors[Lint validates even if warnings are present]' \
|
||||||
|
'(--no-clean)--no-clean[Lint leaves the build directory intact for inspection]' \
|
||||||
|
'*:script or directory:_files'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _spec_cat_options
|
||||||
|
_spec_cat_options=(
|
||||||
|
'(--show-all)--show-all[Pick from all versions of the given podspec]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _spec_which_options
|
||||||
|
_spec_which_options=(
|
||||||
|
'(--show-all)--show-all[Print all versions of the given podspec]'
|
||||||
|
)
|
||||||
|
|
||||||
|
local -a _spec_edit_options
|
||||||
|
_spec_edit_options=(
|
||||||
|
'(--show-all)--show-all[Pick which spec to edit from all available versions of the given podspec]'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
__first_command_list ()
|
||||||
|
{
|
||||||
|
local expl
|
||||||
|
declare -a tasks
|
||||||
|
|
||||||
|
tasks=(install ipc list outdated podfile-info push repo search setup spec update)
|
||||||
|
|
||||||
|
_wanted tasks expl 'help' compadd $tasks
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_list() {
|
||||||
|
_wanted application expl 'repo' compadd $(command ls -1 ~/.cocoapods 2>/dev/null | sed -e 's/ /\\ /g')
|
||||||
|
}
|
||||||
|
|
||||||
|
__pod-repo() {
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_describe -t commands "pod repo" _repo_arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
(options)
|
||||||
|
case $line[1] in
|
||||||
|
(lint)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_repo_lint_options \
|
||||||
|
':feature:__repo_list'
|
||||||
|
;;
|
||||||
|
|
||||||
|
(update)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
':feature:__repo_list'
|
||||||
|
;;
|
||||||
|
|
||||||
|
(add)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
__pod-spec() {
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_describe -t commands "pod spec" _spec_arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
(options)
|
||||||
|
case $line[1] in
|
||||||
|
(create)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(lint)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_spec_lint_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(cat)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_spec_cat_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(which)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_spec_which_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(edit)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_spec_edit_options
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
__pod-ipc() {
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_describe -t commands "pod ipc" _ipc_arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
(options)
|
||||||
|
_arguments -C \
|
||||||
|
$_inherited_options
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
__pod-list() {
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
$_inherited_options \
|
||||||
|
$_list_options \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_describe -t commands "pod list" _list_arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
(options)
|
||||||
|
_arguments -C \
|
||||||
|
$_inherited_options \
|
||||||
|
$_list_options
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
$_inherited_options \
|
||||||
|
':command:->command' \
|
||||||
|
'*::options:->options'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_describe -t commands "pod" _1st_arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
(options)
|
||||||
|
case $line[1] in
|
||||||
|
(help)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
':help:__first_command_list'
|
||||||
|
;;
|
||||||
|
|
||||||
|
(push)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_push_options \
|
||||||
|
':repo:__repo_list'
|
||||||
|
;;
|
||||||
|
|
||||||
|
(repo)
|
||||||
|
__pod-repo
|
||||||
|
;;
|
||||||
|
|
||||||
|
(spec)
|
||||||
|
__pod-spec
|
||||||
|
;;
|
||||||
|
|
||||||
|
(ipc)
|
||||||
|
__pod-ipc
|
||||||
|
;;
|
||||||
|
|
||||||
|
(list)
|
||||||
|
__pod-list
|
||||||
|
;;
|
||||||
|
|
||||||
|
(install)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_install_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(update)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_update_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(outdated)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_outdated_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(search)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_search_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(podfile-info)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_podfile_info_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
(setup)
|
||||||
|
_arguments \
|
||||||
|
$_inherited_options \
|
||||||
|
$_setup_options
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
6
plugins/postgres/postgres.plugin.zsh
Normal file
6
plugins/postgres/postgres.plugin.zsh
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Aliases to stop, start and restart Postgres
|
||||||
|
# Paths noted below are for Postgress installed via Homebrew on OSX
|
||||||
|
|
||||||
|
alias startpost='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start'
|
||||||
|
alias stoppost='pg_ctl -D /usr/local/var/postgres stop -s -m fast'
|
||||||
|
alias restartpost='stoppost && sleep 1 && startpost'
|
||||||
|
|
@ -10,6 +10,8 @@ alias migrate='rake db:migrate && rake db:test:prepare'
|
||||||
alias sc='ruby script/console'
|
alias sc='ruby script/console'
|
||||||
alias sd='ruby script/server --debugger'
|
alias sd='ruby script/server --debugger'
|
||||||
alias devlog='tail -f log/development.log'
|
alias devlog='tail -f log/development.log'
|
||||||
|
alias testlog='tail -f log/test.log'
|
||||||
|
alias prodlog='tail -f log/production.log'
|
||||||
alias -g RET='RAILS_ENV=test'
|
alias -g RET='RAILS_ENV=test'
|
||||||
alias -g REP='RAILS_ENV=production'
|
alias -g REP='RAILS_ENV=production'
|
||||||
alias -g RED='RAILS_ENV=development'
|
alias -g RED='RAILS_ENV=development'
|
||||||
|
|
|
||||||
56
plugins/rails3/_rails3
Normal file
56
plugins/rails3/_rails3
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
#compdef rails
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
# rails 3 zsh completion, based on homebrew completion
|
||||||
|
# Extracted from https://github.com/robbyrussell/oh-my-zsh/blob/30620d463850c17f86e7a56fbf6a8b5e793a4e07/plugins/rails3/_rails3
|
||||||
|
# Published by Christopher Chow
|
||||||
|
|
||||||
|
local -a _1st_arguments
|
||||||
|
_1st_arguments=(
|
||||||
|
'generate:Generate new code (short-cut alias: "g")'
|
||||||
|
'console:Start the Rails console (short-cut alias: "c")'
|
||||||
|
'server:Start the Rails server (short-cut alias: "s")'
|
||||||
|
'dbconsole:Start a console for the database specified in config/database.yml (short-cut alias: "db")'
|
||||||
|
'new:Create a new Rails application. "rails new my_app" creates a new application called MyApp in "./my_app"'
|
||||||
|
'application:Generate the Rails application code'
|
||||||
|
'destroy:Undo code generated with "generate"'
|
||||||
|
'benchmarker:See how fast a piece of code runs'
|
||||||
|
'profiler:Get profile information from a piece of code'
|
||||||
|
'plugin:Install a plugin'
|
||||||
|
)
|
||||||
|
|
||||||
|
_rails_generate_arguments() {
|
||||||
|
generate_arguments=(
|
||||||
|
controller
|
||||||
|
generator
|
||||||
|
helper
|
||||||
|
integration_test
|
||||||
|
mailer
|
||||||
|
migration
|
||||||
|
model
|
||||||
|
observer
|
||||||
|
performance_test
|
||||||
|
plugin
|
||||||
|
resource
|
||||||
|
scaffold
|
||||||
|
scaffold_controller
|
||||||
|
session_migration
|
||||||
|
stylesheets
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
_arguments \
|
||||||
|
'(--version)--version[show version]' \
|
||||||
|
'(--help)--help[show help]' \
|
||||||
|
'*:: :->subcmds' && return 0
|
||||||
|
|
||||||
|
if (( CURRENT == 1 )); then
|
||||||
|
_describe -t commands "rails subcommand" _1st_arguments
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$words[1]" in
|
||||||
|
generate)
|
||||||
|
_rails_generate_arguments
|
||||||
|
_wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;;
|
||||||
|
esac
|
||||||
|
|
@ -4,7 +4,11 @@ function _rails_command () {
|
||||||
if [ -e "script/server" ]; then
|
if [ -e "script/server" ]; then
|
||||||
ruby script/$@
|
ruby script/$@
|
||||||
else
|
else
|
||||||
ruby script/rails $@
|
if [ -e "bin/rails" ]; then
|
||||||
|
bin/rails $@
|
||||||
|
else
|
||||||
|
rails $@
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -19,6 +23,8 @@ alias ru='_rails_command runner'
|
||||||
alias rs='_rails_command server'
|
alias rs='_rails_command server'
|
||||||
alias rsd='_rails_command server --debugger'
|
alias rsd='_rails_command server --debugger'
|
||||||
alias devlog='tail -f log/development.log'
|
alias devlog='tail -f log/development.log'
|
||||||
|
alias testlog='tail -f log/test.log'
|
||||||
|
alias prodlog='tail -f log/production.log'
|
||||||
alias rdm='rake db:migrate'
|
alias rdm='rake db:migrate'
|
||||||
alias rdr='rake db:rollback'
|
alias rdr='rake db:rollback'
|
||||||
alias -g RET='RAILS_ENV=test'
|
alias -g RET='RAILS_ENV=test'
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ alias ru='_rails_command runner'
|
||||||
alias rs='_rails_command server'
|
alias rs='_rails_command server'
|
||||||
alias rsd='_rails_command server --debugger'
|
alias rsd='_rails_command server --debugger'
|
||||||
alias devlog='tail -f log/development.log'
|
alias devlog='tail -f log/development.log'
|
||||||
|
alias testlog='tail -f log/test.log'
|
||||||
|
alias prodlog='tail -f log/production.log'
|
||||||
alias rdm='rake db:migrate'
|
alias rdm='rake db:migrate'
|
||||||
alias rdc='rake db:create'
|
alias rdc='rake db:create'
|
||||||
alias rdr='rake db:rollback'
|
alias rdr='rake db:rollback'
|
||||||
|
|
|
||||||
17
plugins/rand-quote/rand-quote.plugin.zsh
Normal file
17
plugins/rand-quote/rand-quote.plugin.zsh
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Get a random quote fron the site http://www.quotationspage.com/random.php3
|
||||||
|
# Created by Eduardo San Martin Morote aka Posva
|
||||||
|
# http://posva.github.io
|
||||||
|
# Sun Jun 09 10:59:36 CEST 2013
|
||||||
|
# Don't remove this header, thank you
|
||||||
|
# Usage: quote
|
||||||
|
|
||||||
|
if [[ -x `which curl` ]]; then
|
||||||
|
function quote()
|
||||||
|
{
|
||||||
|
Q=$(curl -s --connect-timeout 2 "http://www.quotationspage.com/random.php3" | grep -m 1 "dt ")
|
||||||
|
TXT=$(echo "$Q" | sed -e 's/<\/dt>.*//g' -e 's/.*html//g' -e 's/^[^a-zA-Z]*//' -e 's/<\/a..*$//g')
|
||||||
|
W=$(echo "$Q" | sed -e 's/.*\/quotes\///g' -e 's/<.*//g' -e 's/.*">//g')
|
||||||
|
echo "\e[0;33m${W}\e[0;30m: \e[0;35m“${TXT}”\e[m"
|
||||||
|
}
|
||||||
|
#quote
|
||||||
|
fi
|
||||||
7
plugins/repo/README.md
Normal file
7
plugins/repo/README.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
## repo
|
||||||
|
**Maintainer:** [Stibbons](https://github.com/Stibbons)
|
||||||
|
|
||||||
|
This plugin mainly add support automatic completion for the repo command line tool:
|
||||||
|
http://code.google.com/p/git-repo/
|
||||||
|
|
||||||
|
* `r` aliases `repo`
|
||||||
272
plugins/repo/_repo
Normal file
272
plugins/repo/_repo
Normal file
|
|
@ -0,0 +1,272 @@
|
||||||
|
#compdef repo
|
||||||
|
|
||||||
|
|
||||||
|
__git_apply_whitespace_strategies ()
|
||||||
|
{
|
||||||
|
declare -a strategies
|
||||||
|
|
||||||
|
strategies=(
|
||||||
|
'nowarn:turn off the trailing-whitespace warning'
|
||||||
|
'warn:output trailing-whitespace warning, but apply patch'
|
||||||
|
'fix:output trailing-whitespace warning and strip trailing whitespace'
|
||||||
|
'error:output trailing-whitespace warning and refuse to apply patch'
|
||||||
|
'error-all:same as "error", but output warnings for all files')
|
||||||
|
|
||||||
|
_describe -t strategies 'trailing-whitespace resolution strategy' strategies $*
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
_repo()
|
||||||
|
{
|
||||||
|
local context state state_descr line curcontext="$curcontext"
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
local ret=1
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
'(- 1 *)--help[show usage]'\
|
||||||
|
'1:command:->command'\
|
||||||
|
'*::args:->args' && ret=0
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
repo list 2> /dev/null > /dev/null
|
||||||
|
if [[ $? == 0 ]]; then
|
||||||
|
local commands;
|
||||||
|
commands=(
|
||||||
|
'abandon:Permanently abandon a development branch'
|
||||||
|
'branch:View current topic branches'
|
||||||
|
'branches:View current topic branches'
|
||||||
|
'checkout:Checkout a branch for development'
|
||||||
|
'cherry-pick:Cherry-pick a change.'
|
||||||
|
'diff:Show changes between commit and working tree'
|
||||||
|
'download:Download and checkout a change'
|
||||||
|
'forall:execute command on several project'
|
||||||
|
'grep:Print lines matching a pattern'
|
||||||
|
'help:Display detailed help on a command'
|
||||||
|
'init:Initialize repo in the current directory'
|
||||||
|
'list:List projects and their associated directories'
|
||||||
|
'manifest:Manifest inspection utility'
|
||||||
|
'overview:Display overview of unmerged project branches'
|
||||||
|
'prune:Prune (delete) already merged topics'
|
||||||
|
'rebase:Rebase local branches on upstream branch'
|
||||||
|
'selfupdate:Update repo to the latest version'
|
||||||
|
'smartsync:Update working tree to the latest known good revision'
|
||||||
|
'stage:Stage file(s) for commit'
|
||||||
|
'start:Start a new branch for development'
|
||||||
|
'status:Show the working tree status'
|
||||||
|
'sync:Update working tree to the latest revision'
|
||||||
|
'upload:Upload changes for code review'
|
||||||
|
'version:Display the version of repo'
|
||||||
|
)
|
||||||
|
_describe -t commands 'command' commands && ret=0
|
||||||
|
else
|
||||||
|
local commands;
|
||||||
|
commands=(
|
||||||
|
'init:Install repo in the current working directory'
|
||||||
|
'help:Display detailed help on a command'
|
||||||
|
)
|
||||||
|
_describe -t commands 'command' commands && ret=0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
(args)
|
||||||
|
case $words[1] in
|
||||||
|
(branch | branches)
|
||||||
|
# TODO : list available projects and add them in list to feed compadd with
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
': :__repo_projects' \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(abandon)
|
||||||
|
# TODO : list available projects and add them in list to feed compadd with
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
':branch name:__repo_branch' \
|
||||||
|
': :__repo_projects'\
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(checkout)
|
||||||
|
# TODO : list available projects and add them in list to feed compadd with
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
':branch name:__repo_branch' \
|
||||||
|
': :__repo_projects'\
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(init)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
"(-q --quiet)"{-q,--quiet}"[be quiet]" \
|
||||||
|
"(-u --manifest-url)"{-u,--manifest-url=}"[manifest repository location]":url:__repo_url_prompt \
|
||||||
|
"(-b --manifest-branch)"{-b,--manifest-branch=}"[manifest branch or revision]":branch:__repo_branch\
|
||||||
|
"(-m --manifest-name)"{-m,--manifest-name=}"[initial manifest file]":manifest_name:__repo_manifest_name\
|
||||||
|
"(--mirror)--mirror[mirror the forrest]"\
|
||||||
|
"(--reference)--reference=[location of mirror directory]":dir:_dirs\
|
||||||
|
"(--depth)--depth=[create a shallow clone with given depth; see git clone]":depth:__repo_depth_prompt\
|
||||||
|
"(-g --group=)"{-g,--group=}"[restrict manifest projects to ones with a specified group]":group:_group\
|
||||||
|
"(-p --platform=)"{-p,--platform=}"[restrict manifest projects to ones with a specified platform group(auto|all|none|linux|darwin|...)]":platform:"(auto all none linux darwin)"\
|
||||||
|
"(--repo-url)--repo-url=[repo repository location]":url:__repo_url_prompt\
|
||||||
|
"(--repo-branch)--repo-branch[repo branch or revision]":branch_or_rev:__repo__repo_branch_or_rev\
|
||||||
|
"(--no-repo-verify)--no-repo-verify[do not verify repo source code]"\
|
||||||
|
"(--config-name)--config-name[Always prompt for name/e-mail]"\
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(start)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
"(--all)--all=[begin branch in all projects]"\
|
||||||
|
':branch name:__repo_new__repo_branch_name' \
|
||||||
|
':projects:__repo_projects_or_all' \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(rebase)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
"(-i --interactive)"{-i,--interactive}"[interactive rebase (single project only)]: :__repo_projects" \
|
||||||
|
"(-f --force-rebase)"{-f,--force-rebase}"[Pass --force-rebase to git rebase]" \
|
||||||
|
"(--no-ff)--no-ff=[Pass --no-ff to git rebase]"\
|
||||||
|
"(-q --quiet)"{-q,--quiet}"[Pass --quiet to git rebase]" \
|
||||||
|
"(--autosquash)--no-ff[Pass --autosquash to git rebase]"\
|
||||||
|
"(--whitespace=)--whitespace=[Pass --whitespace to git rebase]: :__git_apply_whitespace_strategies"\
|
||||||
|
"(--auto-stash)--auto-stash[Stash local modifications before starting]"\
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(checkout)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
':branch name:__git_branch_names' \
|
||||||
|
':projects:__repo_projects' \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(list)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(status)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
"(-j --jobs)"{-j,--jobs}"[number of projects to check simultaneously]" \
|
||||||
|
':projects:__repo_projects' \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(sync)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
"(--no-force-broken)--no-force-broken[stop sync if a project fails to sync (probably because of permissions)]" \
|
||||||
|
"(-l --local-only)"{-l,--local-only}"[only update working tree, don't fetch]" \
|
||||||
|
"(-n --network-only)"{-n,--network-branch}"[fetch only, don't update working tree]" \
|
||||||
|
"(-d --detach)"{-d,--detach}"[detach projects back to manifest revision]" \
|
||||||
|
"(-c --current-branch)"{-c,--current-branch}"[fetch only current branch from server]" \
|
||||||
|
"(-q --quiet)"{-q,--quiet}"[be more quiet]" \
|
||||||
|
"(-j --jobs=)"{-j,--jobs=}"[projects to fetch simultaneously (default 1) (limited to 5)]:projects to fetch simultaneously (default 1) (limited to 5)" \
|
||||||
|
"(-m --manifest-name=)"{-m,--manifest-name=}"[temporary manifest to use for this sync]:manifest xml file:_files -g *.xml" \
|
||||||
|
"(--no-clone-bundle)--no-clone-bundle[disable use of /clone.bundle on HTTP/HTTPS]" \
|
||||||
|
"(-s --smart-sync)"{-s,--smart-sync=}"[smart sync using manifest from a known tag]:tag:" \
|
||||||
|
'(--no-repo-verify)--no-repo-verify[do not verify repo source code]' \
|
||||||
|
': :__repo_projects' \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(upload)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
"(-t)-t[Send local branch name to Gerrit Code Review]" \
|
||||||
|
"(--re= --reviewers=)"{--re=,--reviewers=}"[Request reviews from these people]:Request reviews from these people:" \
|
||||||
|
"(--cc=)--cc=[Also send email to these email addresses.]:email addresses:_email_addresses" \
|
||||||
|
"(--br=)--br=[Branch to upload.]:branch:__repo_branch" \
|
||||||
|
"(--cbr --current-branch)"{--cbr,--current-branch}"[Upload current git branch]" \
|
||||||
|
"(-d --draft)"{-d,--draft}"[If specified, upload as a draft.]" \
|
||||||
|
"(--verify --no-verify)--no-verify[Do not run the upload hook.]" \
|
||||||
|
'(--verify --no-verify)--verify[Run the upload hook without prompting]' \
|
||||||
|
': :__repo_projects' \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
(forall)
|
||||||
|
_arguments : \
|
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \
|
||||||
|
"(-v --verbose)"{-v,--verbose}"[Show command error messages]" \
|
||||||
|
'(-p)-p[Show project headers before output]' \
|
||||||
|
': :__repo_projects_mandatory' \
|
||||||
|
"(-c --command -h --help -v --verbose -p)"{-c,--command}"[Command (and arguments) to execute]" \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ret=0
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_reviewers()
|
||||||
|
{
|
||||||
|
# _message -e url 'reviewers'
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_url_prompt()
|
||||||
|
{
|
||||||
|
_message -e url 'url'
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_manifest_name()
|
||||||
|
{
|
||||||
|
_message -e manifest_name 'manifest name'
|
||||||
|
}
|
||||||
|
|
||||||
|
_group()
|
||||||
|
{
|
||||||
|
_message -e group 'group'
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_branch()
|
||||||
|
{
|
||||||
|
#_message -e branch 'Repo branch'
|
||||||
|
branches=($(repo branches| cut -c4- | grep '|' | cut -d' ' -f1))
|
||||||
|
_describe -t branches 'Select repo branch' branches
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo__repo_branch_or_rev()
|
||||||
|
{
|
||||||
|
_message -e branch_or_rev 'repo branch or revision'
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_depth_prompt()
|
||||||
|
{
|
||||||
|
_message -e depth 'depth'
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_projects()
|
||||||
|
{
|
||||||
|
_message -e depth 'Optional option : <projects>...'
|
||||||
|
projects=($(repo list | cut -d' ' -f1))
|
||||||
|
_describe -t projects 'Select projects (keep empty for selecting all projects)' projects
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_projects_mandatory()
|
||||||
|
{
|
||||||
|
projects=($(repo list | cut -d' ' -f1))
|
||||||
|
#_describe -t projects 'Select projects to apply commands' projects
|
||||||
|
_values -s ' ' "Select projects to apply commands" $projects
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_new__repo_branch_name()
|
||||||
|
{
|
||||||
|
branches=($(repo branches| cut -c4- | grep '|' | cut -d' ' -f1))
|
||||||
|
_describe "" branches
|
||||||
|
_message -e "branch name" 'Enter new branch name or select an existing repo branch'
|
||||||
|
}
|
||||||
|
|
||||||
|
__repo_projects_or_all()
|
||||||
|
{
|
||||||
|
#_message -e depth '[--all | <project>...]'
|
||||||
|
|
||||||
|
projects=(--all $(repo list | cut -d' ' -f1))
|
||||||
|
_describe -t projects 'Select projects or --all' projects
|
||||||
|
_describe -t --all 'All projects'
|
||||||
|
}
|
||||||
|
|
||||||
|
_repo "$@"
|
||||||
|
return $?
|
||||||
|
|
||||||
2
plugins/repo/repo.plugin.zsh
Normal file
2
plugins/repo/repo.plugin.zsh
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Aliases
|
||||||
|
alias r='repo'
|
||||||
|
|
@ -3,9 +3,9 @@ fpath=($rvm_path/scripts/zsh/Completion $fpath)
|
||||||
alias rubies='rvm list rubies'
|
alias rubies='rvm list rubies'
|
||||||
alias gemsets='rvm gemset list'
|
alias gemsets='rvm gemset list'
|
||||||
|
|
||||||
local ruby18='ruby-1.8.7-p371'
|
local ruby18='ruby-1.8.7'
|
||||||
local ruby19='ruby-1.9.3-p392'
|
local ruby19='ruby-1.9.3'
|
||||||
local ruby20='ruby-2.0.0-p0'
|
local ruby20='ruby-2.0.0'
|
||||||
|
|
||||||
function rb18 {
|
function rb18 {
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
|
|
@ -31,7 +31,7 @@ compdef _rb19 rb19
|
||||||
|
|
||||||
function rb20 {
|
function rb20 {
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
rvm use "$ruby"
|
rvm use "$ruby20"
|
||||||
else
|
else
|
||||||
rvm use "$ruby20@$1"
|
rvm use "$ruby20@$1"
|
||||||
fi
|
fi
|
||||||
|
|
@ -42,7 +42,6 @@ compdef _rb20 rb20
|
||||||
|
|
||||||
function rvm-update {
|
function rvm-update {
|
||||||
rvm get head
|
rvm get head
|
||||||
rvm reload # TODO: Reload rvm completion?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: Make this usable w/o rvm.
|
# TODO: Make this usable w/o rvm.
|
||||||
|
|
|
||||||
28
plugins/sfffe/sfffe.plugin.zsh
Normal file
28
plugins/sfffe/sfffe.plugin.zsh
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# FILE: sfffe.plugin.zsh
|
||||||
|
# DESCRIPTION: search file for FE
|
||||||
|
# AUTHOR: yleo77 (ylep77@gmail.com)
|
||||||
|
# VERSION: 0.1
|
||||||
|
# REQUIRE: ack
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if [ ! -x $(which ack) ]; then
|
||||||
|
echo \'ack\' is not installed!
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ajs() {
|
||||||
|
ack "$@" --type js
|
||||||
|
}
|
||||||
|
|
||||||
|
acss() {
|
||||||
|
ack "$@" --type css
|
||||||
|
}
|
||||||
|
|
||||||
|
fjs() {
|
||||||
|
find ./ -name "$@*" -type f | grep '\.js'
|
||||||
|
}
|
||||||
|
|
||||||
|
fcss() {
|
||||||
|
find ./ -name "$@*" -type f | grep '\.css'
|
||||||
|
}
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
# To load multiple identities use the identities style, For
|
# To load multiple identities use the identities style, For
|
||||||
# example:
|
# example:
|
||||||
#
|
#
|
||||||
# zstyle :omz:plugins:ssh-agent id_rsa id_rsa2 id_github
|
# zstyle :omz:plugins:ssh-agent identities id_rsa id_rsa2 id_github
|
||||||
#
|
#
|
||||||
# To set the maximum lifetime of the identities, use the
|
# To set the maximum lifetime of the identities, use the
|
||||||
# lifetime style. The lifetime may be specified in seconds
|
# lifetime style. The lifetime may be specified in seconds
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,8 @@ elif [[ $('uname') == 'Darwin' ]]; then
|
||||||
|
|
||||||
for _sublime_path in $_sublime_darwin_paths; do
|
for _sublime_path in $_sublime_darwin_paths; do
|
||||||
if [[ -a $_sublime_path ]]; then
|
if [[ -a $_sublime_path ]]; then
|
||||||
alias st="'$_sublime_path'"
|
alias subl="'$_sublime_path'"
|
||||||
|
alias st=subl
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# symfony basic command completion
|
# symfony basic command completion
|
||||||
|
|
||||||
_symfony_get_command_list () {
|
_symfony_get_command_list () {
|
||||||
./symfony | sed "1,/Available tasks/d" | awk 'BEGIN { cat=null; } /^[A-Za-z]+$/ { cat = $1; } /^ :[a-z]+/ { print cat $1; }'
|
php symfony | sed "1,/Available tasks/d" | awk 'BEGIN { cat=null; } /^[A-Za-z]+$/ { cat = $1; } /^ :[a-z]+/ { print cat $1; }'
|
||||||
}
|
}
|
||||||
|
|
||||||
_symfony () {
|
_symfony () {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,11 @@
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
alias ta='tmux attach -t'
|
||||||
|
alias ts='tmux new-session -s'
|
||||||
|
alias tl='tmux list-sessions'
|
||||||
|
|
||||||
# Only run if tmux is actually installed
|
# Only run if tmux is actually installed
|
||||||
if which tmux &> /dev/null
|
if which tmux &> /dev/null
|
||||||
then
|
then
|
||||||
|
|
@ -14,6 +22,8 @@ if which tmux &> /dev/null
|
||||||
[[ -n "$ZSH_TMUX_AUTOQUIT" ]] || ZSH_TMUX_AUTOQUIT=$ZSH_TMUX_AUTOSTART
|
[[ -n "$ZSH_TMUX_AUTOQUIT" ]] || ZSH_TMUX_AUTOQUIT=$ZSH_TMUX_AUTOSTART
|
||||||
# Set term to screen or screen-256color based on current terminal support
|
# Set term to screen or screen-256color based on current terminal support
|
||||||
[[ -n "$ZSH_TMUX_FIXTERM" ]] || ZSH_TMUX_FIXTERM=true
|
[[ -n "$ZSH_TMUX_FIXTERM" ]] || ZSH_TMUX_FIXTERM=true
|
||||||
|
# Set '-CC' option for iTerm2 tmux integration
|
||||||
|
[[ -n "$ZSH_TMUX_ITERM2" ]] || ZSH_TMUX_ITERM2=false
|
||||||
# The TERM to use for non-256 color terminals.
|
# The TERM to use for non-256 color terminals.
|
||||||
# Tmux states this should be screen, but you may need to change it on
|
# Tmux states this should be screen, but you may need to change it on
|
||||||
# systems without the proper terminfo
|
# systems without the proper terminfo
|
||||||
|
|
@ -36,7 +46,7 @@ if which tmux &> /dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set the correct local config file to use.
|
# Set the correct local config file to use.
|
||||||
if [[ -f $HOME/.tmux.conf || -h $HOME/.tmux.conf ]]
|
if [[ "$ZSH_TMUX_ITERM2" == "false" ]] && [[ -f $HOME/.tmux.conf || -h $HOME/.tmux.conf ]]
|
||||||
then
|
then
|
||||||
#use this when they have a ~/.tmux.conf
|
#use this when they have a ~/.tmux.conf
|
||||||
export _ZSH_TMUX_FIXED_CONFIG="$zsh_tmux_plugin_path/tmux.extra.conf"
|
export _ZSH_TMUX_FIXED_CONFIG="$zsh_tmux_plugin_path/tmux.extra.conf"
|
||||||
|
|
@ -55,11 +65,11 @@ if which tmux &> /dev/null
|
||||||
# Try to connect to an existing session.
|
# Try to connect to an existing session.
|
||||||
elif [[ "$ZSH_TMUX_AUTOCONNECT" == "true" ]]
|
elif [[ "$ZSH_TMUX_AUTOCONNECT" == "true" ]]
|
||||||
then
|
then
|
||||||
\tmux attach || \tmux `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG` new-session
|
\tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` attach || \tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG` new-session
|
||||||
[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit
|
[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit
|
||||||
# Just run tmux, fixing the TERM variable if requested.
|
# Just run tmux, fixing the TERM variable if requested.
|
||||||
else
|
else
|
||||||
\tmux `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG`
|
\tmux `[[ "$ZSH_TMUX_ITERM2" == "true" ]] && echo '-CC '` `[[ "$ZSH_TMUX_FIXTERM" == "true" ]] && echo '-f '$_ZSH_TMUX_FIXED_CONFIG`
|
||||||
[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit
|
[[ "$ZSH_TMUX_AUTOQUIT" == "true" ]] && exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ function web_search() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check whether the search engine is supported
|
# check whether the search engine is supported
|
||||||
if [[ ! $1 =~ '(google|bing|yahoo)' ]];
|
if [[ ! $1 =~ '(google|bing|yahoo|duckduckgo)' ]];
|
||||||
then
|
then
|
||||||
echo "Search engine $1 not supported."
|
echo "Search engine $1 not supported."
|
||||||
return 1
|
return 1
|
||||||
|
|
@ -24,8 +24,12 @@ function web_search() {
|
||||||
$open_cmd "$url"
|
$open_cmd "$url"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
if [[ $1 == 'duckduckgo' ]]; then
|
||||||
url="${url}/search?q="
|
#slightly different search syntax for DDG
|
||||||
|
url="${url}/?q="
|
||||||
|
else
|
||||||
|
url="${url}/search?q="
|
||||||
|
fi
|
||||||
shift # shift out $1
|
shift # shift out $1
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
|
|
@ -34,10 +38,19 @@ function web_search() {
|
||||||
done
|
done
|
||||||
|
|
||||||
url="${url%?}" # remove the last '+'
|
url="${url%?}" # remove the last '+'
|
||||||
|
|
||||||
$open_cmd "$url"
|
$open_cmd "$url"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
alias bing='web_search bing'
|
alias bing='web_search bing'
|
||||||
alias google='web_search google'
|
alias google='web_search google'
|
||||||
alias yahoo='web_search yahoo'
|
alias yahoo='web_search yahoo'
|
||||||
|
alias ddg='web_search duckduckgo'
|
||||||
|
#add your own !bang searches here
|
||||||
|
alias wiki='web_search duckduckgo \!w'
|
||||||
|
alias news='web_search duckduckgo \!n'
|
||||||
|
alias youtube='web_search duckduckgo \!yt'
|
||||||
|
alias map='web_search duckduckgo \!m'
|
||||||
|
alias image='web_search duckduckgo \!i'
|
||||||
|
alias ducky='web_search duckduckgo \!'
|
||||||
|
|
|
||||||
4
plugins/z/Makefile
Normal file
4
plugins/z/Makefile
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
readme:
|
||||||
|
@groff -man -Tascii z.1 | col -bx
|
||||||
|
|
||||||
|
.PHONY: readme
|
||||||
135
plugins/z/README
Normal file
135
plugins/z/README
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
Z(1) User Commands Z(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
z - jump around
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
z [-chlrt] [regex1 regex2 ... regexn]
|
||||||
|
|
||||||
|
AVAILABILITY
|
||||||
|
bash, zsh
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
Tracks your most used directories, based on 'frecency'.
|
||||||
|
|
||||||
|
After a short learning phase, z will take you to the most 'frecent'
|
||||||
|
directory that matches ALL of the regexes given on the command line.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-c restrict matches to subdirectories of the current directory.
|
||||||
|
|
||||||
|
-h show a brief help message
|
||||||
|
|
||||||
|
-l list only
|
||||||
|
|
||||||
|
-r match by rank only
|
||||||
|
|
||||||
|
-t match by recent access only
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
z foo cd to most frecent dir matching foo
|
||||||
|
|
||||||
|
z foo bar cd to most frecent dir matching foo and bar
|
||||||
|
|
||||||
|
z -r foo cd to highest ranked dir matching foo
|
||||||
|
|
||||||
|
z -t foo cd to most recently accessed dir matching foo
|
||||||
|
|
||||||
|
z -l foo list all dirs matching foo (by frecency)
|
||||||
|
|
||||||
|
NOTES
|
||||||
|
Installation:
|
||||||
|
Put something like this in your $HOME/.bashrc or $HOME/.zshrc:
|
||||||
|
|
||||||
|
. /path/to/z.sh
|
||||||
|
|
||||||
|
cd around for a while to build up the db.
|
||||||
|
|
||||||
|
PROFIT!!
|
||||||
|
|
||||||
|
Optionally:
|
||||||
|
Set $_Z_CMD to change the command name (default z).
|
||||||
|
Set $_Z_DATA to change the datafile (default $HOME/.z).
|
||||||
|
Set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution.
|
||||||
|
Set $_Z_NO_PROMPT_COMMAND to handle PROMPT_COMMAND/precmd your-
|
||||||
|
self.
|
||||||
|
Set $_Z_EXCLUDE_DIRS to an array of directories to exclude.
|
||||||
|
(These settings should go in .bashrc/.zshrc before the lines
|
||||||
|
added above.)
|
||||||
|
Install the provided man page z.1 somewhere like
|
||||||
|
/usr/local/man/man1.
|
||||||
|
|
||||||
|
Aging:
|
||||||
|
The rank of directories maintained by z undergoes aging based on a sim-
|
||||||
|
ple formula. The rank of each entry is incremented every time it is
|
||||||
|
accessed. When the sum of ranks is greater than 6000, all ranks are
|
||||||
|
multiplied by 0.99. Entries with a rank lower than 1 are forgotten.
|
||||||
|
|
||||||
|
Frecency:
|
||||||
|
Frecency is a portmantaeu of 'recent' and 'frequency'. It is a weighted
|
||||||
|
rank that depends on how often and how recently something occured. As
|
||||||
|
far as I know, Mozilla came up with the term.
|
||||||
|
|
||||||
|
To z, a directory that has low ranking but has been accessed recently
|
||||||
|
will quickly have higher rank than a directory accessed frequently a
|
||||||
|
long time ago.
|
||||||
|
|
||||||
|
Frecency is determined at runtime.
|
||||||
|
|
||||||
|
Common:
|
||||||
|
When multiple directories match all queries, and they all have a common
|
||||||
|
prefix, z will cd to the shortest matching directory, without regard to
|
||||||
|
priority. This has been in effect, if undocumented, for quite some
|
||||||
|
time, but should probably be configurable or reconsidered.
|
||||||
|
|
||||||
|
Tab Completion:
|
||||||
|
z supports tab completion. After any number of arguments, press TAB to
|
||||||
|
complete on directories that match each argument. Due to limitations of
|
||||||
|
the completion implementations, only the last argument will be com-
|
||||||
|
pleted in the shell.
|
||||||
|
|
||||||
|
Internally, z decides you've requested a completion if the last argu-
|
||||||
|
ment passed is an absolute path to an existing directory. This may
|
||||||
|
cause unexpected behavior if the last argument to z begins with /.
|
||||||
|
|
||||||
|
ENVIRONMENT
|
||||||
|
A function _z() is defined.
|
||||||
|
|
||||||
|
The contents of the variable $_Z_CMD is aliased to _z 2>&1. If not set,
|
||||||
|
$_Z_CMD defaults to z.
|
||||||
|
|
||||||
|
The environment variable $_Z_DATA can be used to control the datafile
|
||||||
|
location. If it is not defined, the location defaults to $HOME/.z.
|
||||||
|
|
||||||
|
The environment variable $_Z_NO_RESOLVE_SYMLINKS can be set to prevent
|
||||||
|
resolving of symlinks. If it is not set, symbolic links will be
|
||||||
|
resolved when added to the datafile.
|
||||||
|
|
||||||
|
In bash, z prepends a command to the PROMPT_COMMAND environment vari-
|
||||||
|
able to maintain its database. In zsh, z appends a function _z_precmd
|
||||||
|
to the precmd_functions array.
|
||||||
|
|
||||||
|
The environment variable $_Z_NO_PROMPT_COMMAND can be set if you want
|
||||||
|
to handle PROMPT_COMMAND or precmd yourself.
|
||||||
|
|
||||||
|
The environment variable $_Z_EXCLUDE_DIRS can be set to an array of
|
||||||
|
directories to exclude from tracking. $HOME is always excluded. Direc-
|
||||||
|
tories must be full paths without trailing slashes.
|
||||||
|
|
||||||
|
FILES
|
||||||
|
Data is stored in $HOME/.z. This can be overridden by setting the
|
||||||
|
$_Z_DATA environment variable. When initialized, z will raise an error
|
||||||
|
if this path is a directory, and not function correctly.
|
||||||
|
|
||||||
|
A man page (z.1) is provided.
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
regex(7), pushd, popd, autojump, cdargs
|
||||||
|
|
||||||
|
Please file bugs at https://github.com/rupa/z/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
z January 2013 Z(1)
|
||||||
155
plugins/z/z.1
Normal file
155
plugins/z/z.1
Normal file
|
|
@ -0,0 +1,155 @@
|
||||||
|
.TH "Z" "1" "January 2013" "z" "User Commands"
|
||||||
|
.SH
|
||||||
|
NAME
|
||||||
|
z \- jump around
|
||||||
|
.SH
|
||||||
|
SYNOPSIS
|
||||||
|
z [\-chlrt] [regex1 regex2 ... regexn]
|
||||||
|
.SH
|
||||||
|
AVAILABILITY
|
||||||
|
bash, zsh
|
||||||
|
.SH
|
||||||
|
DESCRIPTION
|
||||||
|
Tracks your most used directories, based on 'frecency'.
|
||||||
|
.P
|
||||||
|
After a short learning phase, \fBz\fR will take you to the most 'frecent'
|
||||||
|
directory that matches ALL of the regexes given on the command line.
|
||||||
|
.SH
|
||||||
|
OPTIONS
|
||||||
|
.TP
|
||||||
|
\fB\-c\fR
|
||||||
|
restrict matches to subdirectories of the current directory.
|
||||||
|
.TP
|
||||||
|
\fB\-h\fR
|
||||||
|
show a brief help message
|
||||||
|
.TP
|
||||||
|
\fB\-l\fR
|
||||||
|
list only
|
||||||
|
.TP
|
||||||
|
\fB\-r\fR
|
||||||
|
match by rank only
|
||||||
|
.TP
|
||||||
|
\fB\-t\fR
|
||||||
|
match by recent access only
|
||||||
|
.SH EXAMPLES
|
||||||
|
.TP 14
|
||||||
|
\fBz foo\fR
|
||||||
|
cd to most frecent dir matching foo
|
||||||
|
.TP 14
|
||||||
|
\fBz foo bar\fR
|
||||||
|
cd to most frecent dir matching foo and bar
|
||||||
|
.TP 14
|
||||||
|
\fBz -r foo\fR
|
||||||
|
cd to highest ranked dir matching foo
|
||||||
|
.TP 14
|
||||||
|
\fBz -t foo\fR
|
||||||
|
cd to most recently accessed dir matching foo
|
||||||
|
.TP 14
|
||||||
|
\fBz -l foo\fR
|
||||||
|
list all dirs matching foo (by frecency)
|
||||||
|
.SH
|
||||||
|
NOTES
|
||||||
|
.SS
|
||||||
|
Installation:
|
||||||
|
.P
|
||||||
|
Put something like this in your \fB$HOME/.bashrc\fR or \fB$HOME/.zshrc\fR:
|
||||||
|
.RS
|
||||||
|
.P
|
||||||
|
\fB. /path/to/z.sh\fR
|
||||||
|
.RE
|
||||||
|
.P
|
||||||
|
\fBcd\fR around for a while to build up the db.
|
||||||
|
.P
|
||||||
|
PROFIT!!
|
||||||
|
.P
|
||||||
|
Optionally:
|
||||||
|
.RS
|
||||||
|
Set \fB$_Z_CMD\fR to change the command name (default \fBz\fR).
|
||||||
|
.RE
|
||||||
|
.RS
|
||||||
|
Set \fB$_Z_DATA\fR to change the datafile (default \fB$HOME/.z\fR).
|
||||||
|
.RE
|
||||||
|
.RS
|
||||||
|
Set \fB$_Z_NO_RESOLVE_SYMLINKS\fR to prevent symlink resolution.
|
||||||
|
.RE
|
||||||
|
.RS
|
||||||
|
Set \fB$_Z_NO_PROMPT_COMMAND\fR to handle \fBPROMPT_COMMAND/precmd\fR yourself.
|
||||||
|
.RE
|
||||||
|
.RS
|
||||||
|
Set \fB$_Z_EXCLUDE_DIRS\fR to an array of directories to exclude.
|
||||||
|
.RE
|
||||||
|
.RS
|
||||||
|
(These settings should go in .bashrc/.zshrc before the lines added above.)
|
||||||
|
.RE
|
||||||
|
.RS
|
||||||
|
Install the provided man page \fBz.1\fR somewhere like \fB/usr/local/man/man1\fR.
|
||||||
|
.RE
|
||||||
|
.SS
|
||||||
|
Aging:
|
||||||
|
The rank of directories maintained by \fBz\fR undergoes aging based on a simple
|
||||||
|
formula. The rank of each entry is incremented every time it is accessed. When
|
||||||
|
the sum of ranks is greater than 6000, all ranks are multiplied by 0.99. Entries
|
||||||
|
with a rank lower than 1 are forgotten.
|
||||||
|
.SS
|
||||||
|
Frecency:
|
||||||
|
Frecency is a portmantaeu of 'recent' and 'frequency'. It is a weighted rank
|
||||||
|
that depends on how often and how recently something occured. As far as I
|
||||||
|
know, Mozilla came up with the term.
|
||||||
|
.P
|
||||||
|
To \fBz\fR, a directory that has low ranking but has been accessed recently
|
||||||
|
will quickly have higher rank than a directory accessed frequently a long time
|
||||||
|
ago.
|
||||||
|
.P
|
||||||
|
Frecency is determined at runtime.
|
||||||
|
.SS
|
||||||
|
Common:
|
||||||
|
When multiple directories match all queries, and they all have a common prefix,
|
||||||
|
\fBz\fR will cd to the shortest matching directory, without regard to priority.
|
||||||
|
This has been in effect, if undocumented, for quite some time, but should
|
||||||
|
probably be configurable or reconsidered.
|
||||||
|
.SS
|
||||||
|
Tab Completion:
|
||||||
|
\fBz\fR supports tab completion. After any number of arguments, press TAB to
|
||||||
|
complete on directories that match each argument. Due to limitations of the
|
||||||
|
completion implementations, only the last argument will be completed in the
|
||||||
|
shell.
|
||||||
|
.P
|
||||||
|
Internally, \fBz\fR decides you've requested a completion if the last argument
|
||||||
|
passed is an absolute path to an existing directory. This may cause unexpected
|
||||||
|
behavior if the last argument to \fBz\fR begins with \fB/\fR.
|
||||||
|
.SH
|
||||||
|
ENVIRONMENT
|
||||||
|
A function \fB_z()\fR is defined.
|
||||||
|
.P
|
||||||
|
The contents of the variable \fB$_Z_CMD\fR is aliased to \fB_z 2>&1\fR. If not
|
||||||
|
set, \fB$_Z_CMD\fR defaults to \fBz\fR.
|
||||||
|
.P
|
||||||
|
The environment variable \fB$_Z_DATA\fR can be used to control the datafile
|
||||||
|
location. If it is not defined, the location defaults to \fB$HOME/.z\fR.
|
||||||
|
.P
|
||||||
|
The environment variable \fB$_Z_NO_RESOLVE_SYMLINKS\fR can be set to prevent
|
||||||
|
resolving of symlinks. If it is not set, symbolic links will be resolved when
|
||||||
|
added to the datafile.
|
||||||
|
.P
|
||||||
|
In bash, \fBz\fR prepends a command to the \fBPROMPT_COMMAND\fR environment
|
||||||
|
variable to maintain its database. In zsh, \fBz\fR appends a function
|
||||||
|
\fB_z_precmd\fR to the \fBprecmd_functions\fR array.
|
||||||
|
.P
|
||||||
|
The environment variable \fB$_Z_NO_PROMPT_COMMAND\fR can be set if you want to
|
||||||
|
handle \fBPROMPT_COMMAND\fR or \fBprecmd\fR yourself.
|
||||||
|
.P
|
||||||
|
The environment variable \fB$_Z_EXCLUDE_DIRS\fR can be set to an array of
|
||||||
|
directories to exclude from tracking. \fB$HOME\fR is always excluded.
|
||||||
|
Directories must be full paths without trailing slashes.
|
||||||
|
.SH
|
||||||
|
FILES
|
||||||
|
Data is stored in \fB$HOME/.z\fR. This can be overridden by setting the
|
||||||
|
\fB$_Z_DATA\fR environment variable. When initialized, \fBz\fR will raise an
|
||||||
|
error if this path is a directory, and not function correctly.
|
||||||
|
.P
|
||||||
|
A man page (\fBz.1\fR) is provided.
|
||||||
|
.SH
|
||||||
|
SEE ALSO
|
||||||
|
regex(7), pushd, popd, autojump, cdargs
|
||||||
|
.P
|
||||||
|
Please file bugs at https://github.com/rupa/z/
|
||||||
6
plugins/z/z.plugin.zsh
Normal file
6
plugins/z/z.plugin.zsh
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
_load_z() {
|
||||||
|
source $1/z.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ -f $ZSH_CUSTOM/plugins/z/z.plugin.zsh ]] && _load_z $ZSH_CUSTOM/plugins/z
|
||||||
|
[[ -f $ZSH/plugins/z/z.plugin.zsh ]] && _load_z $ZSH/plugins/z
|
||||||
228
plugins/z/z.sh
Normal file
228
plugins/z/z.sh
Normal file
|
|
@ -0,0 +1,228 @@
|
||||||
|
# Copyright (c) 2009 rupa deadwyler under the WTFPL license
|
||||||
|
|
||||||
|
# maintains a jump-list of the directories you actually use
|
||||||
|
#
|
||||||
|
# INSTALL:
|
||||||
|
# * put something like this in your .bashrc/.zshrc:
|
||||||
|
# . /path/to/z.sh
|
||||||
|
# * cd around for a while to build up the db
|
||||||
|
# * PROFIT!!
|
||||||
|
# * optionally:
|
||||||
|
# set $_Z_CMD in .bashrc/.zshrc to change the command (default z).
|
||||||
|
# set $_Z_DATA in .bashrc/.zshrc to change the datafile (default ~/.z).
|
||||||
|
# set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution.
|
||||||
|
# set $_Z_NO_PROMPT_COMMAND if you're handling PROMPT_COMMAND yourself.
|
||||||
|
# set $_Z_EXCLUDE_DIRS to an array of directories to exclude.
|
||||||
|
#
|
||||||
|
# USE:
|
||||||
|
# * z foo # cd to most frecent dir matching foo
|
||||||
|
# * z foo bar # cd to most frecent dir matching foo and bar
|
||||||
|
# * z -r foo # cd to highest ranked dir matching foo
|
||||||
|
# * z -t foo # cd to most recently accessed dir matching foo
|
||||||
|
# * z -l foo # list matches instead of cd
|
||||||
|
# * z -c foo # restrict matches to subdirs of $PWD
|
||||||
|
|
||||||
|
case $- in
|
||||||
|
*i*) ;;
|
||||||
|
*) echo 'ERROR: z.sh is meant to be sourced, not directly executed.'
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ -d "${_Z_DATA:-$HOME/.z}" ] && {
|
||||||
|
echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory."
|
||||||
|
}
|
||||||
|
|
||||||
|
_z() {
|
||||||
|
|
||||||
|
local datafile="${_Z_DATA:-$HOME/.z}"
|
||||||
|
|
||||||
|
# bail out if we don't own ~/.z (we're another user but our ENV is still set)
|
||||||
|
[ -f "$datafile" -a ! -O "$datafile" ] && return
|
||||||
|
|
||||||
|
# add entries
|
||||||
|
if [ "$1" = "--add" ]; then
|
||||||
|
shift
|
||||||
|
|
||||||
|
# $HOME isn't worth matching
|
||||||
|
[ "$*" = "$HOME" ] && return
|
||||||
|
|
||||||
|
# don't track excluded dirs
|
||||||
|
local exclude
|
||||||
|
for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do
|
||||||
|
[ "$*" = "$exclude" ] && return
|
||||||
|
done
|
||||||
|
|
||||||
|
# maintain the file
|
||||||
|
local tempfile
|
||||||
|
tempfile="$(mktemp "$datafile.XXXXXX")" || return
|
||||||
|
while read line; do
|
||||||
|
[ -d "${line%%\|*}" ] && echo $line
|
||||||
|
done < "$datafile" | awk -v path="$*" -v now="$(date +%s)" -F"|" '
|
||||||
|
BEGIN {
|
||||||
|
rank[path] = 1
|
||||||
|
time[path] = now
|
||||||
|
}
|
||||||
|
$2 >= 1 {
|
||||||
|
if( $1 == path ) {
|
||||||
|
rank[$1] = $2 + 1
|
||||||
|
time[$1] = now
|
||||||
|
} else {
|
||||||
|
rank[$1] = $2
|
||||||
|
time[$1] = $3
|
||||||
|
}
|
||||||
|
count += $2
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if( count > 6000 ) {
|
||||||
|
for( i in rank ) print i "|" 0.99*rank[i] "|" time[i] # aging
|
||||||
|
} else for( i in rank ) print i "|" rank[i] "|" time[i]
|
||||||
|
}
|
||||||
|
' 2>/dev/null >| "$tempfile"
|
||||||
|
if [ $? -ne 0 -a -f "$datafile" ]; then
|
||||||
|
env rm -f "$tempfile"
|
||||||
|
else
|
||||||
|
env mv -f "$tempfile" "$datafile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# tab completion
|
||||||
|
elif [ "$1" = "--complete" ]; then
|
||||||
|
while read line; do
|
||||||
|
[ -d "${line%%\|*}" ] && echo $line
|
||||||
|
done < "$datafile" | awk -v q="$2" -F"|" '
|
||||||
|
BEGIN {
|
||||||
|
if( q == tolower(q) ) nocase = 1
|
||||||
|
split(substr(q,3),fnd," ")
|
||||||
|
}
|
||||||
|
{
|
||||||
|
if( nocase ) {
|
||||||
|
for( i in fnd ) tolower($1) !~ tolower(fnd[i]) && $1 = ""
|
||||||
|
} else {
|
||||||
|
for( i in fnd ) $1 !~ fnd[i] && $1 = ""
|
||||||
|
}
|
||||||
|
if( $1 ) print $1
|
||||||
|
}
|
||||||
|
' 2>/dev/null
|
||||||
|
|
||||||
|
else
|
||||||
|
# list/go
|
||||||
|
while [ "$1" ]; do case "$1" in
|
||||||
|
--) while [ "$1" ]; do shift; local fnd="$fnd $1";done;;
|
||||||
|
-*) local opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in
|
||||||
|
c) local fnd="^$PWD $fnd";;
|
||||||
|
h) echo "${_Z_CMD:-z} [-chlrt] args" >&2; return;;
|
||||||
|
l) local list=1;;
|
||||||
|
r) local typ="rank";;
|
||||||
|
t) local typ="recent";;
|
||||||
|
esac; opt=${opt:1}; done;;
|
||||||
|
*) local fnd="$fnd $1";;
|
||||||
|
esac; local last=$1; shift; done
|
||||||
|
[ "$fnd" -a "$fnd" != "^$PWD " ] || local list=1
|
||||||
|
|
||||||
|
# if we hit enter on a completion just go there
|
||||||
|
case "$last" in
|
||||||
|
# completions will always start with /
|
||||||
|
/*) [ -z "$list" -a -d "$last" ] && cd "$last" && return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# no file yet
|
||||||
|
[ -f "$datafile" ] || return
|
||||||
|
|
||||||
|
local cd
|
||||||
|
cd="$(while read line; do
|
||||||
|
[ -d "${line%%\|*}" ] && echo $line
|
||||||
|
done < "$datafile" | awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" '
|
||||||
|
function frecent(rank, time) {
|
||||||
|
dx = t-time
|
||||||
|
if( dx < 3600 ) return rank*4
|
||||||
|
if( dx < 86400 ) return rank*2
|
||||||
|
if( dx < 604800 ) return rank/2
|
||||||
|
return rank/4
|
||||||
|
}
|
||||||
|
function output(files, toopen, override) {
|
||||||
|
if( list ) {
|
||||||
|
cmd = "sort -n >&2"
|
||||||
|
for( i in files ) if( files[i] ) printf "%-10s %s\n", files[i], i | cmd
|
||||||
|
if( override ) printf "%-10s %s\n", "common:", override > "/dev/stderr"
|
||||||
|
} else {
|
||||||
|
if( override ) toopen = override
|
||||||
|
print toopen
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function common(matches) {
|
||||||
|
# shortest match
|
||||||
|
for( i in matches ) {
|
||||||
|
if( matches[i] && (!short || length(i) < length(short)) ) short = i
|
||||||
|
}
|
||||||
|
if( short == "/" ) return
|
||||||
|
# shortest match must be common to each match. escape special characters in
|
||||||
|
# a copy when testing, so we can return the original.
|
||||||
|
clean_short = short
|
||||||
|
gsub(/[\(\)\[\]\|]/, "\\\\&", clean_short)
|
||||||
|
for( i in matches ) if( matches[i] && i !~ clean_short ) return
|
||||||
|
return short
|
||||||
|
}
|
||||||
|
BEGIN { split(q, a, " "); oldf = noldf = -9999999999 }
|
||||||
|
{
|
||||||
|
if( typ == "rank" ) {
|
||||||
|
f = $2
|
||||||
|
} else if( typ == "recent" ) {
|
||||||
|
f = $3-t
|
||||||
|
} else f = frecent($2, $3)
|
||||||
|
wcase[$1] = nocase[$1] = f
|
||||||
|
for( i in a ) {
|
||||||
|
if( $1 !~ a[i] ) delete wcase[$1]
|
||||||
|
if( tolower($1) !~ tolower(a[i]) ) delete nocase[$1]
|
||||||
|
}
|
||||||
|
if( wcase[$1] && wcase[$1] > oldf ) {
|
||||||
|
cx = $1
|
||||||
|
oldf = wcase[$1]
|
||||||
|
} else if( nocase[$1] && nocase[$1] > noldf ) {
|
||||||
|
ncx = $1
|
||||||
|
noldf = nocase[$1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if( cx ) {
|
||||||
|
output(wcase, cx, common(wcase))
|
||||||
|
} else if( ncx ) output(nocase, ncx, common(nocase))
|
||||||
|
}
|
||||||
|
')"
|
||||||
|
[ $? -gt 0 ] && return
|
||||||
|
[ "$cd" ] && cd "$cd"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
alias ${_Z_CMD:-z}='_z 2>&1'
|
||||||
|
|
||||||
|
[ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P"
|
||||||
|
|
||||||
|
if compctl &> /dev/null; then
|
||||||
|
[ "$_Z_NO_PROMPT_COMMAND" ] || {
|
||||||
|
# zsh populate directory list, avoid clobbering any other precmds
|
||||||
|
if [ "$_Z_NO_RESOLVE_SYMLINKS" ]; then
|
||||||
|
_z_precmd() {
|
||||||
|
_z --add "${PWD:a}"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_z_precmd() {
|
||||||
|
_z --add "${PWD:A}"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
precmd_functions+=(_z_precmd)
|
||||||
|
}
|
||||||
|
# zsh tab completion
|
||||||
|
_z_zsh_tab_completion() {
|
||||||
|
local compl
|
||||||
|
read -l compl
|
||||||
|
reply=(${(f)"$(_z --complete "$compl")"})
|
||||||
|
}
|
||||||
|
compctl -U -K _z_zsh_tab_completion _z
|
||||||
|
elif complete &> /dev/null; then
|
||||||
|
# bash tab completion
|
||||||
|
complete -o filenames -C '_z --complete "$COMP_LINE"' ${_Z_CMD:-z}
|
||||||
|
[ "$_Z_NO_PROMPT_COMMAND" ] || {
|
||||||
|
# bash populate directory list. avoid clobbering other PROMPT_COMMANDs.
|
||||||
|
echo $PROMPT_COMMAND | grep -q "_z --add" || {
|
||||||
|
PROMPT_COMMAND='_z --add "$(pwd '$_Z_RESOLVE_SYMLINKS' 2>/dev/null)" 2>/dev/null;'"$PROMPT_COMMAND"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
@ -14,7 +14,7 @@ ZSH_THEME="robbyrussell"
|
||||||
# Set to this to use case-sensitive completion
|
# Set to this to use case-sensitive completion
|
||||||
# CASE_SENSITIVE="true"
|
# CASE_SENSITIVE="true"
|
||||||
|
|
||||||
# Comment this out to disable bi-weekly auto-update checks
|
# Uncomment this to disable bi-weekly auto-update checks
|
||||||
# DISABLE_AUTO_UPDATE="true"
|
# DISABLE_AUTO_UPDATE="true"
|
||||||
|
|
||||||
# Uncomment to change how often before auto-updates occur? (in days)
|
# Uncomment to change how often before auto-updates occur? (in days)
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
# A few utility functions to make it easy and re-usable to draw segmented prompts
|
# A few utility functions to make it easy and re-usable to draw segmented prompts
|
||||||
|
|
||||||
CURRENT_BG='NONE'
|
CURRENT_BG='NONE'
|
||||||
SEGMENT_SEPARATOR='⮀'
|
SEGMENT_SEPARATOR=''
|
||||||
|
|
||||||
# Begin a segment
|
# Begin a segment
|
||||||
# Takes two arguments, background and foreground. Both can be omitted,
|
# Takes two arguments, background and foreground. Both can be omitted,
|
||||||
|
|
@ -90,7 +90,7 @@ prompt_git() {
|
||||||
zstyle ':vcs_info:*' formats ' %u%c'
|
zstyle ':vcs_info:*' formats ' %u%c'
|
||||||
zstyle ':vcs_info:*' actionformats '%u%c'
|
zstyle ':vcs_info:*' actionformats '%u%c'
|
||||||
vcs_info
|
vcs_info
|
||||||
echo -n "${ref/refs\/heads\//⭠ }${vcs_info_msg_0_}"
|
echo -n "${ref/refs\/heads\//± }${vcs_info_msg_0_}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -110,7 +110,7 @@ prompt_hg() {
|
||||||
# if working copy is clean
|
# if working copy is clean
|
||||||
prompt_segment green black
|
prompt_segment green black
|
||||||
fi
|
fi
|
||||||
echo -n $(hg prompt "⭠ {rev}@{branch}") $st
|
echo -n $(hg prompt "☿ {rev}@{branch}") $st
|
||||||
else
|
else
|
||||||
st=""
|
st=""
|
||||||
rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
|
rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
|
||||||
|
|
@ -124,7 +124,7 @@ prompt_hg() {
|
||||||
else
|
else
|
||||||
prompt_segment green black
|
prompt_segment green black
|
||||||
fi
|
fi
|
||||||
echo -n "⭠ $rev@$branch" $st
|
echo -n " $rev@$branch" $st
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
@ -134,6 +134,14 @@ prompt_dir() {
|
||||||
prompt_segment blue black '%~'
|
prompt_segment blue black '%~'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Virtualenv: current working virtualenv
|
||||||
|
prompt_virtualenv() {
|
||||||
|
local virtualenv_path="$VIRTUAL_ENV"
|
||||||
|
if [[ -n $virtualenv_path && -z $VIRTUAL_ENV_DISABLE_PROMPT ]]; then
|
||||||
|
prompt_segment blue black "(`basename $virtualenv_path`)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Status:
|
# Status:
|
||||||
# - was there an error
|
# - was there an error
|
||||||
# - am I root
|
# - am I root
|
||||||
|
|
@ -152,6 +160,7 @@ prompt_status() {
|
||||||
build_prompt() {
|
build_prompt() {
|
||||||
RETVAL=$?
|
RETVAL=$?
|
||||||
prompt_status
|
prompt_status
|
||||||
|
prompt_virtualenv
|
||||||
prompt_context
|
prompt_context
|
||||||
prompt_dir
|
prompt_dir
|
||||||
prompt_git
|
prompt_git
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,12 @@ ZSH_THEME_GIT_PROMPT_CLEAN=""
|
||||||
git_custom_status() {
|
git_custom_status() {
|
||||||
local cb=$(current_branch)
|
local cb=$(current_branch)
|
||||||
if [ -n "$cb" ]; then
|
if [ -n "$cb" ]; then
|
||||||
echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
echo "$(parse_git_dirty)%{$fg_bold[yellow]%}$(work_in_progress)%{$reset_color%}$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#RVM and git settings
|
#RVM and git settings
|
||||||
if [[ -s ~/.rvm/scripts/rvm ]] ; then
|
if [[ -s ~/.rvm/scripts/rvm ]] ; then
|
||||||
RPS1='$(git_custom_status)%{$fg[red]%}[`~/.rvm/bin/rvm-prompt`]%{$reset_color%} $EPS1'
|
RPS1='$(git_custom_status)%{$fg[red]%}[`~/.rvm/bin/rvm-prompt`]%{$reset_color%} $EPS1'
|
||||||
else
|
else
|
||||||
if which rbenv &> /dev/null; then
|
if which rbenv &> /dev/null; then
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ function mygit() {
|
||||||
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$( git_prompt_status )%{$reset_color%}$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$( git_prompt_status )%{$reset_color%}$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function retcode() {}
|
||||||
|
|
||||||
# alternate prompt with git & hg
|
# alternate prompt with git & hg
|
||||||
PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%Y-%m-%d %I:%M:%S"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
|
PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%Y-%m-%d %I:%M:%S"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
|
||||||
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}%?$(retcode)%{\e[0;34m%}%B] <$(mygit)$(hg_prompt_info)>%{\e[0m%}%b '
|
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}%?$(retcode)%{\e[0;34m%}%B] <$(mygit)$(hg_prompt_info)>%{\e[0m%}%b '
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
# on two lines for easier vgrepping
|
# on two lines for easier vgrepping
|
||||||
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
|
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
|
||||||
|
|
||||||
|
function retcode() {}
|
||||||
|
|
||||||
PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%Y-%m-%d %I:%M:%S"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
|
PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%Y-%m-%d %I:%M:%S"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
|
||||||
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}%?$(retcode)%{\e[0;34m%}%B]%{\e[0m%}%b '
|
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}%?$(retcode)%{\e[0;34m%}%B]%{\e[0m%}%b '
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,15 @@
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
# Color shortcuts
|
# Color shortcuts
|
||||||
R=$fg[red]
|
R=$fg_no_bold[red]
|
||||||
G=$fg[green]
|
G=$fg_no_bold[green]
|
||||||
M=$fg[magenta]
|
M=$fg_no_bold[magenta]
|
||||||
RB=$fg_bold[red]
|
Y=$fg_no_bold[yellow]
|
||||||
YB=$fg_bold[yellow]
|
B=$fg_no_bold[blue]
|
||||||
BB=$fg_bold[blue]
|
|
||||||
RESET=$reset_color
|
RESET=$reset_color
|
||||||
|
|
||||||
if [ "$(whoami)" = "root" ]; then
|
if [ "$(whoami)" = "root" ]; then
|
||||||
PROMPTCOLOR="%{$RB%}" PREFIX="-!-";
|
PROMPTCOLOR="%{$R%}" PREFIX="-!-";
|
||||||
else
|
else
|
||||||
PROMPTCOLOR="" PREFIX="---";
|
PROMPTCOLOR="" PREFIX="---";
|
||||||
fi
|
fi
|
||||||
|
|
@ -73,13 +72,14 @@ function custom_git_prompt() {
|
||||||
PROMPT='%B$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} '
|
PROMPT='%B$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} '
|
||||||
RPS1="${return_code}"
|
RPS1="${return_code}"
|
||||||
|
|
||||||
ZSH_THEME_GIT_PROMPT_PREFIX="%{$YB%}‹"
|
ZSH_THEME_GIT_PROMPT_PREFIX="%{$Y%}‹"
|
||||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$YB%}›%{$RESET%} "
|
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$Y%}›%{$RESET%} "
|
||||||
|
|
||||||
ZSH_THEME_GIT_PROMPT_DIRTY="%{$R%}*"
|
ZSH_THEME_GIT_PROMPT_DIRTY="%{$R%}*"
|
||||||
ZSH_THEME_GIT_PROMPT_CLEAN=""
|
ZSH_THEME_GIT_PROMPT_CLEAN=""
|
||||||
|
|
||||||
ZSH_THEME_GIT_PROMPT_AHEAD="%{$BB%}➔"
|
ZSH_THEME_GIT_PROMPT_AHEAD="%{$B%}➔"
|
||||||
|
|
||||||
|
|
||||||
ZSH_THEME_GIT_STATUS_PREFIX=" "
|
ZSH_THEME_GIT_STATUS_PREFIX=" "
|
||||||
|
|
||||||
|
|
@ -90,7 +90,7 @@ ZSH_THEME_GIT_PROMPT_STAGED_RENAMED="%{$G%}R"
|
||||||
ZSH_THEME_GIT_PROMPT_STAGED_DELETED="%{$G%}D"
|
ZSH_THEME_GIT_PROMPT_STAGED_DELETED="%{$G%}D"
|
||||||
|
|
||||||
# Not-staged
|
# Not-staged
|
||||||
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$R%}⁇"
|
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$R%}?"
|
||||||
ZSH_THEME_GIT_PROMPT_MODIFIED="%{$R%}M"
|
ZSH_THEME_GIT_PROMPT_MODIFIED="%{$R%}M"
|
||||||
ZSH_THEME_GIT_PROMPT_DELETED="%{$R%}D"
|
ZSH_THEME_GIT_PROMPT_DELETED="%{$R%}D"
|
||||||
ZSH_THEME_GIT_PROMPT_UNMERGED="%{$R%}UU"
|
ZSH_THEME_GIT_PROMPT_UNMERGED="%{$R%}UU"
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,13 @@ fi
|
||||||
# Append the current git branch, if in a git repository
|
# Append the current git branch, if in a git repository
|
||||||
JARIN_CURRENT_LOCA_="%{$fg_bold[cyan]%}%~\$(git_prompt_info)%{$reset_color%}"
|
JARIN_CURRENT_LOCA_="%{$fg_bold[cyan]%}%~\$(git_prompt_info)%{$reset_color%}"
|
||||||
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%} <%{$fg[magenta]%}"
|
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[white]%} <%{$fg[magenta]%}"
|
||||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
|
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg[white]%}"
|
||||||
|
|
||||||
# Do nothing if the branch is clean (no changes).
|
# Do nothing if the branch is clean (no changes).
|
||||||
ZSH_THEME_GIT_PROMPT_CLEAN="%{$reset_color%}>"
|
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[white]%}>"
|
||||||
|
|
||||||
# Add a yellow ✗ if the branch is dirty
|
# Add a yellow ✗ if the branch is dirty
|
||||||
ZSH_THEME_GIT_PROMPT_DIRTY="%{$reset_color%}> %{$fg[yellow]%}✗"
|
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[white]%}> %{$fg[yellow]%}✗"
|
||||||
|
|
||||||
# Put it all together!
|
# Put it all together!
|
||||||
PROMPT="$JARIN_CURRENT_RUBY_ $JARIN_CURRENT_LOCA_ "
|
PROMPT="$JARIN_CURRENT_RUBY_ $JARIN_CURRENT_LOCA_ "
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@ function theme_preview() {
|
||||||
THEME_NAME=`echo $THEME | sed s/\.zsh-theme$//`
|
THEME_NAME=`echo $THEME | sed s/\.zsh-theme$//`
|
||||||
print "$fg[blue]${(l.((${COLUMNS}-${#THEME_NAME}-5))..─.)}$reset_color $THEME_NAME $fg[blue]───$reset_color"
|
print "$fg[blue]${(l.((${COLUMNS}-${#THEME_NAME}-5))..─.)}$reset_color $THEME_NAME $fg[blue]───$reset_color"
|
||||||
source "$THEMES_DIR/$THEME"
|
source "$THEMES_DIR/$THEME"
|
||||||
print -P $PROMPT
|
cols=$(tput cols)
|
||||||
|
print -P "$PROMPT $RPROMPT"
|
||||||
}
|
}
|
||||||
|
|
||||||
function banner() {
|
function banner() {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
printf '\033[0;34m%s\033[0m\n' "Upgrading Oh My Zsh"
|
printf '\033[0;34m%s\033[0m\n' "Upgrading Oh My Zsh"
|
||||||
cd "$ZSH"
|
cd "$ZSH"
|
||||||
if git pull origin master
|
if git pull --rebase origin master
|
||||||
then
|
then
|
||||||
printf '\033[0;32m%s\033[0m\n' ' __ __ '
|
printf '\033[0;32m%s\033[0m\n' ' __ __ '
|
||||||
printf '\033[0;32m%s\033[0m\n' ' ____ / /_ ____ ___ __ __ ____ _____/ /_ '
|
printf '\033[0;32m%s\033[0m\n' ' ____ / /_ ____ ___ __ __ ____ _____/ /_ '
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue