From 714cfb1db2966ddfc0330a09e620164189233b49 Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Tue, 31 May 2011 11:46:26 +0200 Subject: [PATCH 01/17] Add guru theme --- themes/guru.zsh-theme | 98 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 themes/guru.zsh-theme diff --git a/themes/guru.zsh-theme b/themes/guru.zsh-theme new file mode 100644 index 000000000..2a2223528 --- /dev/null +++ b/themes/guru.zsh-theme @@ -0,0 +1,98 @@ +#------------------------------------------------------------------------------- +# Guru theme for oh-my-zsh by Adam Lindberg +# (Needs Git plugin for current_branch method) +#------------------------------------------------------------------------------- + + +# Color shortcuts +R=$fg[red] +Y=$fg[yellow] +G=$fg[green] +M=$fg[magenta] +W=$fg[white] +B=$fg[black] +RB=$fg_bold[red] +YB=$fg_bold[yellow] +GB=$fg_bold[green] +MB=$fg_bold[magenta] +WB=$fg_bold[white] +BB=$fg_bold[black] +RESET=$reset_color + +if [ "$(whoami)" = "root" ]; then + PROMPTCOLOR="%{$RB%}" PREFIX="-!-"; +else + PROMPTCOLOR="%{$BB%}" PREFIX="---"; +fi + +local return_code="%(?..%{$R%}%? ↵%{$RESET%})" + +GIT_PREFIX="%{$YB%}‹" +GIT_SUFFIX="%{$YB%}›" + +# Get the status of the working tree (copied and modified from git.zsh) +custom_git_prompt_status() { + INDEX=$(git status --porcelain 2> /dev/null) + STATUS="" + # Non-staged + if $(echo "$INDEX" | grep '^?? ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS" + fi + if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS" + fi + if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" + fi + if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + fi + # Staged + if $(echo "$INDEX" | grep '^D ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_DELETED$STATUS" + fi + if $(echo "$INDEX" | grep '^R ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_RENAMED$STATUS" + fi + if $(echo "$INDEX" | grep '^M ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_MODIFIED$STATUS" + fi + if $(echo "$INDEX" | grep '^A' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_ADDED$STATUS" + fi + echo $STATUS +} + +# get the name of the branch we are on (copied and modified from git.zsh) +function custom_git_prompt() { + ref=$(git symbolic-ref HEAD 2> /dev/null) || return + echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(git_prompt_ahead)$(parse_git_dirty)$(custom_git_prompt_status)$ZSH_THEME_GIT_PROMPT_SUFFIX" +} + +PROMPT='${PROMPTCOLOR}$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} ' +RPS1="${return_code}" + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$YB%}‹" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$YB%}›%{$RESET%} " + +ZSH_THEME_GIT_PROMPT_AHEAD="%{$BB%}➝" + +# Staged +ZSH_THEME_GIT_PROMPT_STAGED_ADDED="%{$G%}A" +ZSH_THEME_GIT_PROMPT_STAGED_MODIFIED="%{$G%}M" +ZSH_THEME_GIT_PROMPT_STAGED_RENAMED="%{$G%}R" +ZSH_THEME_GIT_PROMPT_STAGED_DELETED="%{$G%}D" + +# Not-staged +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$R%}??" +ZSH_THEME_GIT_PROMPT_MODIFIED="%{$R%}M" +ZSH_THEME_GIT_PROMPT_DELETED="%{$R%}D" +ZSH_THEME_GIT_PROMPT_UNMERGED="%{$R%}UU" + +ZSH_THEME_GIT_PROMPT_DIRTY="%{$R%}* " + +ZSH_THEME_GIT_PROMPT_CLEAN="" From 9c306670a73ec3e313666fc497952153bdc16220 Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Tue, 31 May 2011 14:07:38 +0200 Subject: [PATCH 02/17] Improve unicode characters and git status --- themes/guru.zsh-theme | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/themes/guru.zsh-theme b/themes/guru.zsh-theme index 2a2223528..c63f1082a 100644 --- a/themes/guru.zsh-theme +++ b/themes/guru.zsh-theme @@ -64,13 +64,18 @@ custom_git_prompt_status() { if $(echo "$INDEX" | grep '^A' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_ADDED$STATUS" fi + + if $(echo "$STATUS" &> /dev/null); then + STATUS="$ZSH_THEME_GIT_STATUS_PREFIX$STATUS" + fi + echo $STATUS } # get the name of the branch we are on (copied and modified from git.zsh) function custom_git_prompt() { ref=$(git symbolic-ref HEAD 2> /dev/null) || return - echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(git_prompt_ahead)$(parse_git_dirty)$(custom_git_prompt_status)$ZSH_THEME_GIT_PROMPT_SUFFIX" + echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$(git_prompt_ahead)$(custom_git_prompt_status)$ZSH_THEME_GIT_PROMPT_SUFFIX" } PROMPT='${PROMPTCOLOR}$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} ' @@ -79,7 +84,12 @@ RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$YB%}‹" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$YB%}›%{$RESET%} " -ZSH_THEME_GIT_PROMPT_AHEAD="%{$BB%}➝" +ZSH_THEME_GIT_PROMPT_DIRTY="%{$R%}*" +ZSH_THEME_GIT_PROMPT_CLEAN="" + +ZSH_THEME_GIT_PROMPT_AHEAD="%{$BB%}➔" + +ZSH_THEME_GIT_STATUS_PREFIX=" " # Staged ZSH_THEME_GIT_PROMPT_STAGED_ADDED="%{$G%}A" @@ -88,11 +98,7 @@ ZSH_THEME_GIT_PROMPT_STAGED_RENAMED="%{$G%}R" ZSH_THEME_GIT_PROMPT_STAGED_DELETED="%{$G%}D" # 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_DELETED="%{$R%}D" ZSH_THEME_GIT_PROMPT_UNMERGED="%{$R%}UU" - -ZSH_THEME_GIT_PROMPT_DIRTY="%{$R%}* " - -ZSH_THEME_GIT_PROMPT_CLEAN="" From a9b6f081b4a405dd1365df9c35aa3603196e3fc7 Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Wed, 1 Jun 2011 10:11:06 +0200 Subject: [PATCH 03/17] Remove extra space when no status --- themes/guru.zsh-theme | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/themes/guru.zsh-theme b/themes/guru.zsh-theme index c63f1082a..aa7b28b34 100644 --- a/themes/guru.zsh-theme +++ b/themes/guru.zsh-theme @@ -27,9 +27,6 @@ fi local return_code="%(?..%{$R%}%? ↵%{$RESET%})" -GIT_PREFIX="%{$YB%}‹" -GIT_SUFFIX="%{$YB%}›" - # Get the status of the working tree (copied and modified from git.zsh) custom_git_prompt_status() { INDEX=$(git status --porcelain 2> /dev/null) @@ -65,7 +62,7 @@ custom_git_prompt_status() { STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_ADDED$STATUS" fi - if $(echo "$STATUS" &> /dev/null); then + if $(echo -n "$STATUS" | grep '.*' &> /dev/null); then STATUS="$ZSH_THEME_GIT_STATUS_PREFIX$STATUS" fi From 35b879a17b965b0ea28009c4561962c9ed17ef1f Mon Sep 17 00:00:00 2001 From: gwjo Date: Sat, 4 Jun 2011 21:07:55 -0400 Subject: [PATCH 04/17] Add support for agent forwarding --- plugins/ssh-agent/ssh-agent.plugin.zsh | 52 ++++++++++++++++++++------ 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index 0efc4546f..0f5b03d26 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -1,23 +1,51 @@ -# Based on code from Joseph M. Reagle -# http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html +# +# INSTRUCTIONS +# +# To enabled agent forwarding support add the following to +# your .zshrc file: +# +# zstyle :omz:plugins:ssh-agent agent-forwarding on +# +# +# CREDITS +# +# Based on code from Joseph M. Reagle +# http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html +# +# Agent forwarding support based on ideas from +# Florent Thoumie and Jonas Pfenniger +# -local SSH_ENV=$HOME/.ssh/environment-$HOST +local _plugin__ssh_env=$HOME/.ssh/environment-$HOST +local _plugin__forwarding -function start_agent { - /usr/bin/env ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV} - chmod 600 ${SSH_ENV} - . ${SSH_ENV} > /dev/null +function _plugin__start_agent() +{ + /usr/bin/env ssh-agent | sed 's/^echo/#echo/' > ${_plugin__ssh_env} + chmod 600 ${_plugin__ssh_env} + . ${_plugin__ssh_env} > /dev/null /usr/bin/ssh-add; } -# Source SSH settings, if applicable +# test if agent-forwarding is enabled +zstyle -b :omz:plugins:ssh-agent agent-forwarding _plugin__forwarding +if [[ ${_plugin__forwarding} == "yes" && -z $SSH_AGENT_PID && -n "$SSH_AUTH_SOCK" ]]; then + # No PID but a AUTH_SOCK means agent forwarding is enabled + # Add a nifty symlink for screen/tmux + [[ -L $SSH_AUTH_SOCK ]] || ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen -if [ -f "${SSH_ENV}" ]; then - . ${SSH_ENV} > /dev/null +elif [ -f "${_plugin__ssh_env}" ]; then + # Source SSH settings, if applicable + . ${_plugin__ssh_env} > /dev/null ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { - start_agent; + _plugin__start_agent; } else - start_agent; + _plugin__start_agent; fi +# tidy up after ourselves +unfunction _plugin__start_agent +unset _plugin__forwarding +unset _plugin__ssh_env + From 40b7f2099d393950e26d1a9720743e161b1abe49 Mon Sep 17 00:00:00 2001 From: gwjo Date: Sat, 4 Jun 2011 22:16:10 -0400 Subject: [PATCH 05/17] Add support for loading mulitple identities --- plugins/ssh-agent/ssh-agent.plugin.zsh | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index 0f5b03d26..c4e92a1fe 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -6,6 +6,11 @@ # # zstyle :omz:plugins:ssh-agent agent-forwarding on # +# To load multiple identies use the identities style, For +# example: +# +# zstyle :omz:plugins:ssh-agent id_rsa id_rsa2 id_github +# # # CREDITS # @@ -21,17 +26,23 @@ local _plugin__forwarding function _plugin__start_agent() { + local -a identities + + # start ssh-agent and setup environment /usr/bin/env ssh-agent | sed 's/^echo/#echo/' > ${_plugin__ssh_env} chmod 600 ${_plugin__ssh_env} . ${_plugin__ssh_env} > /dev/null - /usr/bin/ssh-add; + + # load identies + zstyle -a :omz:plugins:ssh-agent identities identities + echo starting... + /usr/bin/ssh-add $HOME/.ssh/${^identities} } # test if agent-forwarding is enabled zstyle -b :omz:plugins:ssh-agent agent-forwarding _plugin__forwarding -if [[ ${_plugin__forwarding} == "yes" && -z $SSH_AGENT_PID && -n "$SSH_AUTH_SOCK" ]]; then - # No PID but a AUTH_SOCK means agent forwarding is enabled - # Add a nifty symlink for screen/tmux +if [[ ${_plugin__forwarding} == "yes" && -n "$SSH_AUTH_SOCK" ]]; then + # Add a nifty symlink for screen/tmux if agent forwarding [[ -L $SSH_AUTH_SOCK ]] || ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen elif [ -f "${_plugin__ssh_env}" ]; then From 70cb607b7bee04ceef74d6f7aa80589e009e4c78 Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Tue, 7 Jun 2011 15:28:43 +0200 Subject: [PATCH 06/17] Remove unused colors and use original prompt color --- themes/guru.zsh-theme | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/themes/guru.zsh-theme b/themes/guru.zsh-theme index aa7b28b34..b99cd816e 100644 --- a/themes/guru.zsh-theme +++ b/themes/guru.zsh-theme @@ -6,23 +6,17 @@ # Color shortcuts R=$fg[red] -Y=$fg[yellow] G=$fg[green] M=$fg[magenta] -W=$fg[white] -B=$fg[black] RB=$fg_bold[red] YB=$fg_bold[yellow] -GB=$fg_bold[green] -MB=$fg_bold[magenta] -WB=$fg_bold[white] -BB=$fg_bold[black] +BB=$fg_bold[blue] RESET=$reset_color if [ "$(whoami)" = "root" ]; then PROMPTCOLOR="%{$RB%}" PREFIX="-!-"; else - PROMPTCOLOR="%{$BB%}" PREFIX="---"; + PROMPTCOLOR="" PREFIX="---"; fi local return_code="%(?..%{$R%}%? ↵%{$RESET%})" @@ -75,7 +69,8 @@ function custom_git_prompt() { echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$(git_prompt_ahead)$(custom_git_prompt_status)$ZSH_THEME_GIT_PROMPT_SUFFIX" } -PROMPT='${PROMPTCOLOR}$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} ' +# %B sets bold text +PROMPT='%B$PREFIX %2~ $(custom_git_prompt)%{$M%}%B»%b%{$RESET%} ' RPS1="${return_code}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$YB%}‹" From 915c28752eb8bfb9610e14f62161ab3bd573d218 Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Tue, 7 Jun 2011 15:32:48 +0200 Subject: [PATCH 07/17] Add email address --- themes/guru.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/guru.zsh-theme b/themes/guru.zsh-theme index b99cd816e..cbd56194f 100644 --- a/themes/guru.zsh-theme +++ b/themes/guru.zsh-theme @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------- -# Guru theme for oh-my-zsh by Adam Lindberg +# Guru theme for oh-my-zsh by Adam Lindberg (eproxus@gmail.com) # (Needs Git plugin for current_branch method) #------------------------------------------------------------------------------- From 73946a6066fa8bf740b4765b7e204df9599f9689 Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Tue, 7 Jun 2011 15:40:18 +0200 Subject: [PATCH 08/17] Add note about Solarized color theme --- themes/guru.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/guru.zsh-theme b/themes/guru.zsh-theme index cbd56194f..a5ffdb722 100644 --- a/themes/guru.zsh-theme +++ b/themes/guru.zsh-theme @@ -1,9 +1,9 @@ #------------------------------------------------------------------------------- # Guru theme for oh-my-zsh by Adam Lindberg (eproxus@gmail.com) +# Intended to be used with Solarized: http://ethanschoonover.com/solarized # (Needs Git plugin for current_branch method) #------------------------------------------------------------------------------- - # Color shortcuts R=$fg[red] G=$fg[green] From 4a7392fdd0be8fafcaffccc206f23c7746129fb8 Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Tue, 7 Jun 2011 15:40:32 +0200 Subject: [PATCH 09/17] Fix git R and M status when used together --- themes/guru.zsh-theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/guru.zsh-theme b/themes/guru.zsh-theme index a5ffdb722..dfec3dfb5 100644 --- a/themes/guru.zsh-theme +++ b/themes/guru.zsh-theme @@ -35,7 +35,7 @@ custom_git_prompt_status() { if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" fi - if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then + if $(echo "$INDEX" | grep '^.M ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" @@ -46,7 +46,7 @@ custom_git_prompt_status() { if $(echo "$INDEX" | grep '^D ' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_DELETED$STATUS" fi - if $(echo "$INDEX" | grep '^R ' &> /dev/null); then + if $(echo "$INDEX" | grep '^R' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_RENAMED$STATUS" fi if $(echo "$INDEX" | grep '^M ' &> /dev/null); then From d99284f6b569a0860ed14330c8c9eaf5f0441fe8 Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Tue, 7 Jun 2011 15:42:55 +0200 Subject: [PATCH 10/17] Rename guru theme to sunrise --- themes/{guru.zsh-theme => sunrise.zsh-theme} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename themes/{guru.zsh-theme => sunrise.zsh-theme} (97%) diff --git a/themes/guru.zsh-theme b/themes/sunrise.zsh-theme similarity index 97% rename from themes/guru.zsh-theme rename to themes/sunrise.zsh-theme index dfec3dfb5..15004084d 100644 --- a/themes/guru.zsh-theme +++ b/themes/sunrise.zsh-theme @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------- -# Guru theme for oh-my-zsh by Adam Lindberg (eproxus@gmail.com) +# Sunrise theme for oh-my-zsh by Adam Lindberg (eproxus@gmail.com) # Intended to be used with Solarized: http://ethanschoonover.com/solarized # (Needs Git plugin for current_branch method) #------------------------------------------------------------------------------- From 3eae652a6d4bc5f280bb7f9d33000f378becf13c Mon Sep 17 00:00:00 2001 From: Adam Lindberg Date: Wed, 8 Jun 2011 16:33:29 +0100 Subject: [PATCH 11/17] Fix MM lines being read correctly --- themes/sunrise.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/sunrise.zsh-theme b/themes/sunrise.zsh-theme index 15004084d..88b371d79 100644 --- a/themes/sunrise.zsh-theme +++ b/themes/sunrise.zsh-theme @@ -49,7 +49,7 @@ custom_git_prompt_status() { if $(echo "$INDEX" | grep '^R' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_RENAMED$STATUS" fi - if $(echo "$INDEX" | grep '^M ' &> /dev/null); then + if $(echo "$INDEX" | grep '^M' &> /dev/null); then STATUS="$ZSH_THEME_GIT_PROMPT_STAGED_MODIFIED$STATUS" fi if $(echo "$INDEX" | grep '^A' &> /dev/null); then From b61fcb64abfd733a95f0e83e3009086959623252 Mon Sep 17 00:00:00 2001 From: Frank Louwers Date: Thu, 30 Jun 2011 15:19:50 +0200 Subject: [PATCH 12/17] knife autocompletion --- plugins/knife/_knife | 174 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 plugins/knife/_knife diff --git a/plugins/knife/_knife b/plugins/knife/_knife new file mode 100644 index 000000000..7f8c95ee5 --- /dev/null +++ b/plugins/knife/_knife @@ -0,0 +1,174 @@ +#compdef knife + +# These flags should be available everywhere according to man knife +knife_general_flags=( --help --server-url --key --config --editor --format --log_level --logfile --no-editor --user --print-after --version --yes ) + +# knife has a very special syntax, some example calls are: +# knife status +# knife cookbook list +# knife role show ROLENAME +# knife data bag show DATABAGNAME +# knife role show ROLENAME --attribute ATTRIBUTENAME +# knife cookbook show COOKBOOKNAME COOKBOOKVERSION recipes + +# The -Q switch in compadd allow for completions of things like "data bag" without having to go through two rounds of completion and avoids zsh inserting a \ for escaping spaces +_knife() { + local curcontext="$curcontext" state line + typeset -A opt_args + cloudproviders=(bluebox ec2 rackspace slicehost terremark) + _arguments \ + '1: :->knifecmd'\ + '2: :->knifesubcmd'\ + '3: :->knifesubcmd2' \ + '4: :->knifesubcmd3' \ + '5: :->knifesubcmd4' \ + '6: :->knifesubcmd5' + + case $state in + knifecmd) + compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" exec index node recipe role search ssh status windows $cloudproviders + ;; + knifesubcmd) + case $words[2] in + (bluebox|ec2|rackspace|slicehost|terremark) + compadd "$@" server images + ;; + client) + compadd -Q "$@" "bulk delete" list create show delete edit reregister + ;; + configure) + compadd "$@" client + ;; + cookbook) + compadd -Q "$@" test list create download delete "metadata from" show "bulk delete" metadata upload + ;; + node) + compadd -Q "$@" "from file" create show edit delete list run_list "bulk delete" + ;; + recipe) + compadd "$@" list + ;; + role) + compadd -Q "$@" "bulk delete" create delete edit "from file" list show + ;; + windows) + compadd "$@" bootstrap + ;; + *) + _arguments '2:Subsubcommands:($(_knife_options1))' + esac + ;; + knifesubcmd2) + case $words[3] in + server) + compadd "$@" list create delete + ;; + images) + compadd "$@" list + ;; + site) + compadd "$@" vendor show share search download list unshare + ;; + (show|delete|edit) + _arguments '3:Subsubcommands:($(_chef_$words[2]s_remote))' + ;; + (upload|test) + _arguments '3:Subsubcommands:($(_chef_$words[2]s_local) --all)' + ;; + list) + compadd -a "$@" knife_general_flags + ;; + bag) + compadd -Q "$@" show edit list "from file" create delete + ;; + *) + _arguments '3:Subsubcommands:($(_knife_options2))' + esac + ;; + knifesubcmd3) + case $words[3] in + show) + case $words[2] in + cookbook) + versioncomp=1 + _arguments '4:Cookbookversions:($(_cookbook_versions) latest)' + ;; + (node|client|role) + compadd "$@" --attribute + esac + esac + case $words[4] in + (show|edit) + _arguments '4:Subsubsubcommands:($(_chef_$words[2]_$words[3]s_remote))' + ;; + file) + _arguments '*:file or directory:_files -g "*.(rb|json)"' + ;; + list) + compadd -a "$@" knife_general_flags + ;; + *) + _arguments '*:Subsubcommands:($(_knife_options3))' + esac + ;; + knifesubcmd4) + if (( versioncomp > 0 )); then + compadd "$@" attributes definitions files libraries providers recipes resources templates + else + _arguments '*:Subsubcommands:($(_knife_options2))' + fi + ;; + knifesubcmd5) + _arguments '*:Subsubcommands:($(_knife_options3))' + esac +} + +# Helper functions to provide the argument completion for several depths of commands +_knife_options1() { + ( for line in $( knife $words[2] --help | grep -v "^knife" ); do echo $line | grep "\-\-"; done ) +} + +_knife_options2() { + ( for line in $( knife $words[2] $words[3] --help | grep -v "^knife" ); do echo $line | grep "\-\-"; done ) +} + +_knife_options3() { + ( for line in $( knife $words[2] $words[3] $words[4] --help | grep -v "^knife" ); do echo $line | grep "\-\-"; done ) +} + +# The chef_x_remote functions use knife to get a list of objects of type x on the server +_chef_roles_remote() { + (knife role list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') +} + +_chef_clients_remote() { + (knife client list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') +} + +_chef_nodes_remote() { + (knife node list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') +} + +_chef_cookbooks_remote() { + (knife cookbook list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') +} + +_chef_sitecookbooks_remote() { + (knife cookbook site list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') +} + +_chef_data_bags_remote() { + (knife data bag list | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}') +} + +# The chef_x_local functions use the knife config to find the paths of relevant objects x to be uploaded to the server +_chef_cookbooks_local() { + (for i in $( grep cookbook_path $HOME/.chef/knife.rb | awk 'BEGIN {FS = "[" }; {print $2}' | sed 's/\,//g' | sed "s/'//g" | sed 's/\(.*\)]/\1/' ); do ls $i; done) +} + +# This function extracts the available cookbook versions on the chef server +_cookbook_versions() { + (knife cookbook show $words[4] | grep -v $words[4] | grep -v -E '\]|\[|\{|\}' | sed 's/ //g' | sed 's/"//g') +} + +_knife "$@" From 9308a7d472a1dea6610887b98d6d789741f96a49 Mon Sep 17 00:00:00 2001 From: Adam Blinkinsop Date: Thu, 14 Jul 2011 11:04:46 -0700 Subject: [PATCH 13/17] Added a new theme. --- themes/blinks.zsh-theme | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 themes/blinks.zsh-theme diff --git a/themes/blinks.zsh-theme b/themes/blinks.zsh-theme new file mode 100644 index 000000000..3db7012f4 --- /dev/null +++ b/themes/blinks.zsh-theme @@ -0,0 +1,20 @@ +# https://github.com/blinks zsh theme + +function _prompt_char() { + if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then + echo "%{%F{blue}%}±%{%f%k%b%}" + else + echo ' ' + fi +} + +ZSH_THEME_GIT_PROMPT_PREFIX=" [%{%B%F{blue}%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{%f%k%b%K{black}%B%F{green}%}]" +ZSH_THEME_GIT_PROMPT_DIRTY=" %{%F{red}%}*%{%f%k%b%}" +ZSH_THEME_GIT_PROMPT_CLEAN="" + +PROMPT='%{%f%k%b%} +%{%K{black}%B%F{green}%}%n%{%B%F{blue}%}@%{%B%F{cyan}%}%m%{%B%F{green}%} %{%b%F{yellow}%K{black}%}%~%{%B%F{green}%}$(git_prompt_info)%E%{%f%k%b%} +%{%K{black}%}$(_prompt_char)%{%K{black}%} %#%{%f%k%b%} ' + +RPROMPT='!%{%B%F{cyan}%}%!%{%f%k%b%}' From 66c6260c10422bf50c474c9654a7928ce99e7ceb Mon Sep 17 00:00:00 2001 From: Paul Serby Date: Sat, 16 Jul 2011 16:15:15 +0100 Subject: [PATCH 14/17] Completion for cake the coffee-script build tool --- plugins/cake/cake.plugin.zsh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 plugins/cake/cake.plugin.zsh diff --git a/plugins/cake/cake.plugin.zsh b/plugins/cake/cake.plugin.zsh new file mode 100644 index 000000000..75997521a --- /dev/null +++ b/plugins/cake/cake.plugin.zsh @@ -0,0 +1,32 @@ +# Set this to 1 if you want to cache the tasks +cacheTaskList=1 + +# Cache filename +cacheFile='.cake-task-cache' + +_cake_does_target_list_need_generating () { + + if [ $cacheTaskList -eq 0 ]; then + return 1; + fi + + if [ ! -f $cacheFile ]; then return 0; + else + accurate=$(stat -f%m $cacheFile) + changed=$(stat -f%m Cakefile) + return $(expr $accurate '>=' $changed) + fi +} + +_cake () { + if [ -f Cakefile ]; then + if _cake_does_target_list_need_generating; then + cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' > $cacheFile + compadd `cat $cacheFile` + else + compadd `cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'` + fi + fi +} + +compdef _cake cake From e7e9e5bbe608fd7572a810f36e7f1b3321c25136 Mon Sep 17 00:00:00 2001 From: Benjamin Boudreau Date: Sat, 16 Jul 2011 18:42:09 -0400 Subject: [PATCH 15/17] Added archlinux plugin --- plugins/archlinux/archlinux.plugin.zsh | 67 ++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 plugins/archlinux/archlinux.plugin.zsh diff --git a/plugins/archlinux/archlinux.plugin.zsh b/plugins/archlinux/archlinux.plugin.zsh new file mode 100644 index 000000000..acb8df057 --- /dev/null +++ b/plugins/archlinux/archlinux.plugin.zsh @@ -0,0 +1,67 @@ +# Archlinux zsh aliases and functions for zsh + +# Aliases ################################################################### + +# Look for yaourt, and add some useful functions if we have it. +if [[ -x `which yaourt` ]]; then + upgrade () { + yaourt -Syu -C + } + # Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips + alias yaupg='sudo yaourt -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. + alias yain='sudo yaourt -S' # Install specific package(s) from the repositories + alias yains='sudo yaourt -U' # Install specific package not from the repositories but from a file + alias yare='sudo yaourt -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies + alias yarem='sudo yaourt -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies + alias yarep='yaourt -Si' # Display information about a given package in the repositories + alias yareps='yaourt -Ss' # Search for package(s) in the repositories + alias yaloc='yaourt -Qi' # Display information about a given package in the local database + alias yalocs='yaourt -Qs' # Search for package(s) in the local database + # Additional yaourt alias examples + alias yaupd='sudo yaourt -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories + alias yainsd='sudo yaourt -S --asdeps' # Install given package(s) as dependencies of another package + alias yamir='sudo yaourt -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist +else + upgrade() { + sudo pacman -Syu + } +fi + +# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips +alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. +alias pacin='sudo pacman -S' # Install specific package(s) from the repositories +alias pacins='sudo pacman -U' # Install specific package not from the repositories but from a file +alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies +alias pacrem='sudo pacman -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies +alias pacrep='pacman -Si' # Display information about a given package in the repositories +alias pacreps='pacman -Ss' # Search for package(s) in the repositories +alias pacloc='pacman -Qi' # Display information about a given package in the local database +alias paclocs='pacman -Qs' # Search for package(s) in the local database +# Additional pacman alias examples +alias pacupd='sudo pacman -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories +alias pacinsd='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package +alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist + +# https://bbs.archlinux.org/viewtopic.php?id=93683 +paclist() { + sudo pacman -Qei $(pacman -Qu|cut -d" " -f 1)|awk ' BEGIN {FS=":"}/^Name/{printf("\033[1;36m%s\033[1;37m", $2)}/^Description/{print $2}' +} +alias paclsorhpans='sudo pacman -Qdt' +alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)' + +pacdisowned() { + tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$ + db=$tmp/db + fs=$tmp/fs + + mkdir "$tmp" + trap 'rm -rf "$tmp"' EXIT + + pacman -Qlq | sort -u > "$db" + + find /bin /etc /lib /sbin /usr \ + ! -name lost+found \ + \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" + + comm -23 "$fs" "$db" +} From edcd4f7eea357cefee37a25a371e1dd5d1a6b598 Mon Sep 17 00:00:00 2001 From: Jake Bell Date: Sun, 17 Jul 2011 13:01:48 -0500 Subject: [PATCH 16/17] Adding quotes to deal with paths that have spaces. --- tools/upgrade.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/upgrade.sh b/tools/upgrade.sh index e30488822..2b75e5541 100644 --- a/tools/upgrade.sh +++ b/tools/upgrade.sh @@ -9,4 +9,4 @@ echo "\033[0;32m"'\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ '"\033[0m echo "\033[0;32m"' /____/ '"\033[0m" echo "\033[0;34mHooray! Oh My Zsh has been updated and/or is at the current version.\033[0m" echo "\033[0;34mTo keep up on the latest, be sure to follow Oh My Zsh on twitter: \033[1mhttp://twitter.com/ohmyzsh\033[0m" -cd $current_path +cd "$current_path" From 127d2ae57b01ae13dd6017c3c104a45a0086e88e Mon Sep 17 00:00:00 2001 From: alexandru totolici Date: Sun, 17 Jul 2011 21:01:06 -0700 Subject: [PATCH 17/17] Fixed typo for one of the subcommands (linset -> linsert) --- plugins/redis-cli/_redis-cli | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/redis-cli/_redis-cli b/plugins/redis-cli/_redis-cli index 3789add18..1569f2916 100644 --- a/plugins/redis-cli/_redis-cli +++ b/plugins/redis-cli/_redis-cli @@ -51,7 +51,7 @@ _1st_arguments=( 'keys:find all keys matching the given pattern' 'lastsave:get the UNIX timestamp of the last successful save to disk' 'lindex:get an element from a list by its index' - 'linset:insert an element before or after another element in a list' + 'linsert:insert an element before or after another element in a list' 'llen:get the length of a list' 'lpop:remove and get the first element in a list' 'lpush:prepend a value to a list'