From 76c102944c8c164f2cf8908712b6c6a1d9fe5d70 Mon Sep 17 00:00:00 2001 From: Ilyes Kechidi Date: Wed, 23 Nov 2016 02:21:18 +0100 Subject: [PATCH 01/65] added a transfer.sh plugin created a function to easily upload files to transfer.sh file sharing site Usage : transfer file.txt --- plugins/transfer/transfer.plugin.zsh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 plugins/transfer/transfer.plugin.zsh diff --git a/plugins/transfer/transfer.plugin.zsh b/plugins/transfer/transfer.plugin.zsh new file mode 100644 index 000000000..7d0d84bea --- /dev/null +++ b/plugins/transfer/transfer.plugin.zsh @@ -0,0 +1,7 @@ +# transfer.sh Easy file sharing from the command line +# transfer Plugin +# Usage Example : +# > transfer file.txt + +transfer() { if [ $# -eq 0 ]; then echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi +tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; } \ No newline at end of file From 8013d3d8a933b6bae3ed9ceb37bebb42cf28ea56 Mon Sep 17 00:00:00 2001 From: Ilyes Kechidi Date: Tue, 7 Feb 2017 14:40:21 +0100 Subject: [PATCH 02/65] added README for transfer.sh plugin --- plugins/transfer/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 plugins/transfer/README.md diff --git a/plugins/transfer/README.md b/plugins/transfer/README.md new file mode 100644 index 000000000..e14b94aa9 --- /dev/null +++ b/plugins/transfer/README.md @@ -0,0 +1,7 @@ +# `transfer.sh` plugin +transfer.sh is an easy file sharing service from the command line + +## Usage +Example +> transfer file.txt + From 845fdfaae0a913143d1ff03220a1bf1596871225 Mon Sep 17 00:00:00 2001 From: Ilyes Kechidi Date: Thu, 9 Feb 2017 02:28:33 +0100 Subject: [PATCH 03/65] replaced transfer function with @nl5887 version --- plugins/transfer/transfer.plugin.zsh | 62 +++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/plugins/transfer/transfer.plugin.zsh b/plugins/transfer/transfer.plugin.zsh index 7d0d84bea..796faa9a2 100644 --- a/plugins/transfer/transfer.plugin.zsh +++ b/plugins/transfer/transfer.plugin.zsh @@ -2,6 +2,64 @@ # transfer Plugin # Usage Example : # > transfer file.txt +# > transfer directory/ -transfer() { if [ $# -eq 0 ]; then echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi -tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; } \ No newline at end of file + + +# Author: +# Remco Verhoef +# https://gist.github.com/nl5887/a511f172d3fb3cd0e42d +# + +curl --version 2>&1 > /dev/null +if [ $? -ne 0 ]; then + echo "Could not find curl." + return 1 +fi + +transfer() { + # check arguments + if [ $# -eq 0 ]; + then + echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md" + return 1 + fi + + # get temporarily filename, output is written to this file show progress can be showed + tmpfile=$( mktemp -t transferXXX ) + + # upload stdin or file + file=$1 + + if tty -s; + then + basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g') + + if [ ! -e $file ]; + then + echo "File $file doesn't exists." + return 1 + fi + + if [ -d $file ]; + then + # zip directory and transfer + zipfile=$( mktemp -t transferXXX.zip ) + cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile + curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile + rm -f $zipfile + else + # transfer file + curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile + fi + else + # transfer pipe + curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile + fi + + # cat output link + cat $tmpfile + + # cleanup + rm -f $tmpfile +} \ No newline at end of file From 6cefe70ffc8f5d827a9b4341129114a843ceb248 Mon Sep 17 00:00:00 2001 From: Ilyes Kechidi Date: Thu, 9 Feb 2017 02:29:24 +0100 Subject: [PATCH 04/65] updated transfer README.md --- plugins/transfer/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/transfer/README.md b/plugins/transfer/README.md index e14b94aa9..9bf488d4e 100644 --- a/plugins/transfer/README.md +++ b/plugins/transfer/README.md @@ -4,4 +4,5 @@ transfer.sh is an easy file sharing service from the command line ## Usage Example > transfer file.txt +> transfer directory/ From c36474b7dfbe19c0628f6f21d8da40b535eeb5fb Mon Sep 17 00:00:00 2001 From: Ilyes Kechidi Date: Thu, 9 Feb 2017 19:41:09 +0100 Subject: [PATCH 05/65] modified the script to use tar command instead of zip --- plugins/transfer/transfer.plugin.zsh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/plugins/transfer/transfer.plugin.zsh b/plugins/transfer/transfer.plugin.zsh index 796faa9a2..7a7cd85ec 100644 --- a/plugins/transfer/transfer.plugin.zsh +++ b/plugins/transfer/transfer.plugin.zsh @@ -9,6 +9,7 @@ # Author: # Remco Verhoef # https://gist.github.com/nl5887/a511f172d3fb3cd0e42d +# Modified to use tar command instead of zip # curl --version 2>&1 > /dev/null @@ -43,11 +44,12 @@ transfer() { if [ -d $file ]; then - # zip directory and transfer - zipfile=$( mktemp -t transferXXX.zip ) - cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile - curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile - rm -f $zipfile + echo $file + # tar directory and transfer + tarfile=$( mktemp -t transferXXX.tar.gz ) + cd $(dirname $file) && tar -czf $tarfile $(basename $file) + curl --progress-bar --upload-file "$tarfile" "https://transfer.sh/$basefile.tar.gz" >> $tmpfile + rm -f $tarfile else # transfer file curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile From 7bb7ce62d3a78859aa15151ecc46df5adc9cf049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Zuvir=C3=ADa?= Date: Sun, 22 Apr 2018 22:34:26 -0300 Subject: [PATCH 06/65] On branch fzuviria.plugin.dirhistory.new-feature.navigate-history Changes to be committed: modified: dirhistory/dirhistory.plugin.zsh New Feature: Navigate directory hierarchy using ALT-UP and ALT-DOWN. (mac keybindings not yet implemented) ALT-UP moves to higher hierarchy (cd ..) ALT-DOWN moves into the first directory found in alphabetical order --- plugins/dirhistory/dirhistory.plugin.zsh | 50 ++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh index 8138872bc..05839e35a 100644 --- a/plugins/dirhistory/dirhistory.plugin.zsh +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -2,6 +2,10 @@ # Navigate directory history using ALT-LEFT and ALT-RIGHT. ALT-LEFT moves back to directories # that the user has changed to in the past, and ALT-RIGHT undoes ALT-LEFT. # +# Navigate directory hierarchy using ALT-UP and ALT-DOWN. (mac keybindings not yet implemented) +# ALT-UP moves to higher hierarchy (cd ..) +# ALT-DOWN moves into the first directory found in alphabetical order +# dirhistory_past=($PWD) dirhistory_future=() @@ -134,3 +138,49 @@ bindkey "\e\e[C" dirhistory_zle_dirhistory_future bindkey "\eO3C" dirhistory_zle_dirhistory_future +# +# HIERARCHY Implemented in this section, in case someone wants to split it to another plugin if it clashes bindings +# + +# Move up in hierarchy +function dirhistory_up() { + cd .. +} + +# Move down in hierarchy +function dirhistory_down() { + cd "`find . -mindepth 1 -maxdepth 1 -type d | sort -n | head -n 1`" +} + + +# Bind keys to hierarchy navigation +function dirhistory_zle_dirhistory_up() { + zle kill-buffer # Erase current line in buffer + dirhistory_up + zle accept-line +} + +function dirhistory_zle_dirhistory_down() { + zle kill-buffer # Erase current line in buffer + dirhistory_down + zle accept-line +} + +zle -N dirhistory_zle_dirhistory_up +# xterm in normal mode +bindkey "\e[3A" dirhistory_zle_dirhistory_up +bindkey "\e[1;3A" dirhistory_zle_dirhistory_up +# Mac teminal (alt+up) + #bindkey "^[?" dirhistory_zle_dirhistory_up #dont know it +# Putty: +bindkey "\e\e[A" dirhistory_zle_dirhistory_up +# GNU screen: +bindkey "\eO3A" dirhistory_zle_dirhistory_up + +zle -N dirhistory_zle_dirhistory_down +bindkey "\e[3B" dirhistory_zle_dirhistory_down +bindkey "\e[1;3B" dirhistory_zle_dirhistory_down +# Mac teminal (alt+down) + #bindkey "^[?" dirhistory_zle_dirhistory_down #dont know it +bindkey "\e\e[B" dirhistory_zle_dirhistory_down +bindkey "\eO3B" dirhistory_zle_dirhistory_down From 8eba19208dfd62a0565e837a715e62d9876480a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 27 Apr 2018 17:56:21 +0200 Subject: [PATCH 07/65] Revert to checking if `enable-ssh-support` is set Fixes #6772 --- plugins/gpg-agent/gpg-agent.plugin.zsh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh index 6a94f598f..3e24c2527 100644 --- a/plugins/gpg-agent/gpg-agent.plugin.zsh +++ b/plugins/gpg-agent/gpg-agent.plugin.zsh @@ -1,16 +1,16 @@ # Enable gpg-agent if it is not running- # --use-standard-socket will work from version 2 upwards -AGENT_SOCK=`gpgconf --list-dirs | grep agent-socket | cut -d : -f 2` +AGENT_SOCK=$(gpgconf --list-dirs | grep agent-socket | cut -d : -f 2) -if [ ! -S ${AGENT_SOCK} ]; then - gpg-agent --daemon --use-standard-socket >/dev/null 2>&1 +if [[ ! -S $AGENT_SOCK ]]; then + gpg-agent --daemon --use-standard-socket &>/dev/null fi -export GPG_TTY=$(tty) +export GPG_TTY=$TTY # Set SSH to use gpg-agent if it's enabled -if [ -S "${AGENT_SOCK}.ssh" ]; then - export SSH_AUTH_SOCK="${AGENT_SOCK}.ssh" +GNUPGCONFIG="${GNUPGHOME:-"$HOME/.gnupg"}/gpg-agent.conf" +if [[ -r $GNUPGCONFIG ]] && command grep -q enable-ssh-support "$GNUPGCONFIG"; then + export SSH_AUTH_SOCK="$AGENT_SOCK.ssh" unset SSH_AGENT_PID fi - From 32952ec7e8fc254e892eb1c32191d0c1901ae811 Mon Sep 17 00:00:00 2001 From: Ady Romantika Date: Sat, 28 Apr 2018 22:55:46 +0800 Subject: [PATCH 08/65] Add aliases for kubectl ingress (#6762) --- plugins/kubectl/kubectl.plugin.zsh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh index 97e429aac..ec1321d8b 100644 --- a/plugins/kubectl/kubectl.plugin.zsh +++ b/plugins/kubectl/kubectl.plugin.zsh @@ -33,6 +33,12 @@ alias kes='k edit svc' alias kds='k describe svc' alias kdels='k delete svc' +# Ingress management +alias kgi='k get ingress' +alias kei='k edit ingress' +alias kdi='k describe ingress' +alias kdeli='k delete ingress' + # Secret management alias kgsec='k get secret' alias kdsec='k describe secret' From 493c30954bae3da4ccd80333b807a8d37c131da8 Mon Sep 17 00:00:00 2001 From: Oliver Baumann Date: Mon, 30 Apr 2018 16:25:02 +0200 Subject: [PATCH 09/65] Parse branch-name for fresh repo (#6302) Inside a fresh git repo, i.e. immediately after a `git init`, usually no commit template exists yet. In this case, git renders a different status message than "Initial commit on". We should consider this message when attempting to parse out the branch name. Fixes #6301 --- plugins/git-prompt/gitstatus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/git-prompt/gitstatus.py b/plugins/git-prompt/gitstatus.py index a8eb8284b..14d875973 100644 --- a/plugins/git-prompt/gitstatus.py +++ b/plugins/git-prompt/gitstatus.py @@ -41,7 +41,7 @@ ahead, behind = 0, 0 status = [(line[0], line[1], line[2:]) for line in stdout.decode('utf-8').splitlines()] for st in status: if st[0] == '#' and st[1] == '#': - if re.search('Initial commit on', st[2]): + if re.search('Initial commit on', st[2]) or re.search('No commits yet on', st[2]): branch = st[2].split(' ')[-1] elif re.search('no branch', st[2]): # detached status branch = get_tagname_or_hash() From cafa657469bda1baf145c090e168057ae632464d Mon Sep 17 00:00:00 2001 From: Joseph Richey Date: Tue, 1 May 2018 06:21:12 -0700 Subject: [PATCH 10/65] Correctly handle verbose/version flags for rustc (#6786) See the help output for rustc (v1.25) --- plugins/rust/_rust | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/rust/_rust b/plugins/rust/_rust index ac6aee160..6e3f344cd 100644 --- a/plugins/rust/_rust +++ b/plugins/rust/_rust @@ -88,14 +88,14 @@ _rustc_opts_vals=( --pretty='[Pretty-print the input instead of compiling]::TYPE:_values "TYPES" "$_rustc_pretty_types[@]"' --unpretty='[Present the input source, unstable (and less-pretty)]::TYPE:_values "TYPES" "$_rustc_unpretty_types[@]"' --color='[Configure coloring of output]:CONF:_values "COLORS" "$_rustc_color_types[@]"' - {-v,--version}'[Print version info and exit]::VERBOSE:(verbose)' ) _rustc_opts_switches=( -g'[Equivalent to --debuginfo=2]' -O'[Equivalent to --opt-level=2]' --test'[Build a test harness]' - --verbose'[Use verbose output]' + {-v,--verbose}'[Use verbose output]' + {-V,--version}'[Print version info and exit]' {-h,--help}'[Display this message]' --no-analysis'[Parse and expand the output, but run no analysis or produce output]' --no-trans'[Run all passes except translation; no output]' From c4981bae0a91ce6d4b0717558342584cc6491199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sat, 5 May 2018 21:27:48 +0200 Subject: [PATCH 11/65] installer: check if zsh in path instead of /etc/shells Fixes #4955 Closes #5931 Closes #6398 Co-authored-by: Void Co-authored-by: Kaleb Elwert --- tools/install.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index 840a0d7d8..1a0a8e6db 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -24,12 +24,10 @@ main() { # which may fail on systems lacking tput or terminfo set -e - CHECK_ZSH_INSTALLED=$(grep /zsh$ /etc/shells | wc -l) - if [ ! $CHECK_ZSH_INSTALLED -ge 1 ]; then + if command -v zsh >/dev/null 2>&1; then printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n" exit fi - unset CHECK_ZSH_INSTALLED if [ ! -n "$ZSH" ]; then ZSH=~/.oh-my-zsh From 8f0ff4bb63a8fd26741128a851c224af323eb772 Mon Sep 17 00:00:00 2001 From: ningwei1993 Date: Mon, 7 May 2018 06:39:28 +0800 Subject: [PATCH 12/65] fix bug for check zsh (#6798) --- tools/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/install.sh b/tools/install.sh index 1a0a8e6db..ad47df785 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -24,7 +24,7 @@ main() { # which may fail on systems lacking tput or terminfo set -e - if command -v zsh >/dev/null 2>&1; then + if ! command -v zsh >/dev/null 2>&1; then printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n" exit fi From 00f311a3c1c0beff04db8a005fcfbfc251d62276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 7 May 2018 18:00:27 +0200 Subject: [PATCH 13/65] Add READMEs to plugins copydir and copyfile (#6802) * Add README to copydir plugin * Add README to copyfile plugin --- plugins/copydir/README.md | 10 ++++++++++ plugins/copyfile/README.md | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 plugins/copydir/README.md create mode 100644 plugins/copyfile/README.md diff --git a/plugins/copydir/README.md b/plugins/copydir/README.md new file mode 100644 index 000000000..594bf1065 --- /dev/null +++ b/plugins/copydir/README.md @@ -0,0 +1,10 @@ +# copydir plugin + +Copies the path of your current folder to the system clipboard. + +To use, add `copydir` to your plugins array: +``` +plugins=(... copydir) +``` + +Then use the command `copydir` to copy the $PWD. diff --git a/plugins/copyfile/README.md b/plugins/copyfile/README.md new file mode 100644 index 000000000..53138ad06 --- /dev/null +++ b/plugins/copyfile/README.md @@ -0,0 +1,10 @@ +# copyfile plugin + +Puts the contents of a file in your system clipboard so you can paste it anywhere. + +To use, add `copyfile` to your plugins array: +``` +plugins=(... copyfile) +``` + +Then you can run the command `copyfile ` to copy the file named `filename`. From 6bff0793328d73aecd3387acb21e3e89771af14f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 7 May 2018 18:15:01 +0200 Subject: [PATCH 14/65] Allow completion of dot directories (#6803) Fixes #3775, fixes #6543 --- lib/completion.zsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/completion.zsh b/lib/completion.zsh index a1e934315..c7db2eb7b 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -25,6 +25,9 @@ else fi unset CASE_SENSITIVE HYPHEN_INSENSITIVE +# Complete . and .. special directories +zstyle ':completion:*' special-dirs true + zstyle ':completion:*' list-colors '' zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' From 362b061f5ca657034445f3805fa962efc99f0a3e Mon Sep 17 00:00:00 2001 From: Joshua Kovach Date: Mon, 7 May 2018 12:19:45 -0400 Subject: [PATCH 15/65] Fix branch not updating on checkout in steeef (#6784) * Fix branch not updating on checkout in steeef * Check for `hub` in steeef when switching branches --- themes/steeef.zsh-theme | 3 +++ 1 file changed, 3 insertions(+) diff --git a/themes/steeef.zsh-theme b/themes/steeef.zsh-theme index 88ef1ca1b..622c90465 100644 --- a/themes/steeef.zsh-theme +++ b/themes/steeef.zsh-theme @@ -66,6 +66,9 @@ function steeef_preexec { *git*) PR_GIT_UPDATE=1 ;; + *hub*) + PR_GIT_UPDATE=1 + ;; *svn*) PR_GIT_UPDATE=1 ;; From 0011d34f71fca91a2afeca7a0c05942c7e63ee5f Mon Sep 17 00:00:00 2001 From: MikeDawg Date: Sat, 3 Feb 2018 16:40:05 -0700 Subject: [PATCH 16/65] Removed duplicate fedora from plugins, dnf provides exact same features --- plugins/fedora/README.md | 3 --- plugins/fedora/fedora.plugin.zsh | 17 +---------------- 2 files changed, 1 insertion(+), 19 deletions(-) delete mode 100644 plugins/fedora/README.md mode change 100644 => 120000 plugins/fedora/fedora.plugin.zsh diff --git a/plugins/fedora/README.md b/plugins/fedora/README.md deleted file mode 100644 index f384b0ffd..000000000 --- a/plugins/fedora/README.md +++ /dev/null @@ -1,3 +0,0 @@ -This is a plugin based on yum plugin, but using dnf as main frontend -(from Fedora 22 onwards, yum is deprecated in favor of dnf). - diff --git a/plugins/fedora/fedora.plugin.zsh b/plugins/fedora/fedora.plugin.zsh deleted file mode 100644 index eddc3627b..000000000 --- a/plugins/fedora/fedora.plugin.zsh +++ /dev/null @@ -1,16 +0,0 @@ -## Aliases - -alias dnfs="dnf search" # search package -alias dnfp="dnf info" # show package info -alias dnfl="dnf list" # list packages -alias dnfgl="dnf grouplist" # list package groups -alias dnfli="dnf list installed" # print all installed packages -alias dnfmc="dnf makecache" # rebuilds the dnf package list - -alias dnfu="sudo dnf upgrade" # upgrade packages -alias dnfi="sudo dnf install" # install package -alias dnfgi="sudo dnf groupinstall" # install package group -alias dnfr="sudo dnf remove" # remove package -alias dnfgr="sudo dnf groupremove" # remove pagage group -alias dnfrl="sudo dnf remove --remove-leaves" # remove package and leaves -alias dnfc="sudo dnf clean all" # clean cache diff --git a/plugins/fedora/fedora.plugin.zsh b/plugins/fedora/fedora.plugin.zsh new file mode 120000 index 000000000..16a214313 --- /dev/null +++ b/plugins/fedora/fedora.plugin.zsh @@ -0,0 +1 @@ +../dnf/dnf.plugin.zsh \ No newline at end of file From b7e544e6f171e3bf754d80e3c5b61b4f8f065622 Mon Sep 17 00:00:00 2001 From: David Harrigan Date: Tue, 8 May 2018 12:13:11 +0100 Subject: [PATCH 17/65] gradle plugin should support kotlin gradle build files (#6529) This change allows the gradle plugin to recongise build.gradle.kts files and thus generate the autocomplete entries. -=david=- closes #6528 --- plugins/gradle/gradle.plugin.zsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh index 0adc04a13..c7047552d 100644 --- a/plugins/gradle/gradle.plugin.zsh +++ b/plugins/gradle/gradle.plugin.zsh @@ -88,7 +88,7 @@ function _gradle_arguments() { # and if so, regenerate the .gradle_tasks cache file ############################################################################ _gradle_does_task_list_need_generating () { - [[ ! -f .gradletasknamecache ]] || [[ build.gradle -nt .gradletasknamecache ]] + [[ ! -f .gradletasknamecache ]] || [[ build.gradle -nt .gradletasknamecache || build.gradle.kts -nt .gradletasknamecache ]] } ############## @@ -144,7 +144,7 @@ _gradle_parse_and_extract_tasks () { # Discover the gradle tasks by running "gradle tasks --all" ############################################################################ _gradle_tasks () { - if [[ -f build.gradle ]]; then + if [[ -f build.gradle || -f build.gradle.kts ]]; then _gradle_arguments if _gradle_does_task_list_need_generating; then _gradle_parse_and_extract_tasks "$(gradle tasks --all)" > .gradletasknamecache @@ -154,7 +154,7 @@ _gradle_tasks () { } _gradlew_tasks () { - if [[ -f build.gradle ]]; then + if [[ -f build.gradle || -f build.gradle.kts ]]; then _gradle_arguments if _gradle_does_task_list_need_generating; then _gradle_parse_and_extract_tasks "$(./gradlew tasks --all)" > .gradletasknamecache From 18f7ca577a41807f0c99fc9d00e1572d96d7c6cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Zuvir=C3=ADa?= Date: Tue, 8 May 2018 12:55:59 -0300 Subject: [PATCH 18/65] Adhere to coding style outlined in wiki --- plugins/dirhistory/dirhistory.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh index 05839e35a..6867086ca 100644 --- a/plugins/dirhistory/dirhistory.plugin.zsh +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -144,12 +144,12 @@ bindkey "\eO3C" dirhistory_zle_dirhistory_future # Move up in hierarchy function dirhistory_up() { - cd .. + cd .. || return 1 } # Move down in hierarchy function dirhistory_down() { - cd "`find . -mindepth 1 -maxdepth 1 -type d | sort -n | head -n 1`" + cd "$(find . -mindepth 1 -maxdepth 1 -type d | sort -n | head -n 1)" || return 1 } From 825baeb31074ee43e77e7cd26ff17b619ed13bb5 Mon Sep 17 00:00:00 2001 From: Quentin Nerden Date: Wed, 9 May 2018 22:34:41 +0200 Subject: [PATCH 19/65] Add autocomplete plugin for minikube (#6436) --- plugins/minikube/minikube.plugin.zsh | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 plugins/minikube/minikube.plugin.zsh diff --git a/plugins/minikube/minikube.plugin.zsh b/plugins/minikube/minikube.plugin.zsh new file mode 100644 index 000000000..d8ebe79af --- /dev/null +++ b/plugins/minikube/minikube.plugin.zsh @@ -0,0 +1,6 @@ +# Autocompletion for Minikube. +# + +if [ $commands[minikube] ]; then + source <(minikube completion zsh) +fi From e8c328cb394e39f8d1c7d18b85b0be12bd71c556 Mon Sep 17 00:00:00 2001 From: Hosh Date: Thu, 10 May 2018 19:53:16 +0100 Subject: [PATCH 20/65] Update AWS completion (#6745) --- plugins/aws/aws.plugin.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index 6a0e04add..a326e2e01 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -42,11 +42,11 @@ function aws_profiles { compctl -K aws_profiles asp -if _homebrew-installed && _awscli-homebrew-installed ; then +if which aws_zsh_completer.sh &>/dev/null; then + _aws_zsh_completer_path=$(which aws_zsh_completer.sh 2>/dev/null) +elif _homebrew-installed && _awscli-homebrew-installed; then _aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh -else - _aws_zsh_completer_path=$(which aws_zsh_completer.sh) fi -[ -x $_aws_zsh_completer_path ] && source $_aws_zsh_completer_path +[ -n "$_aws_zsh_completer_path" ] && [ -x $_aws_zsh_completer_path ] && source $_aws_zsh_completer_path unset _aws_zsh_completer_path From 18effd77db1156c11848bd3bfadd8fa63c747516 Mon Sep 17 00:00:00 2001 From: Xiao Fan Date: Fri, 11 May 2018 07:28:02 -0700 Subject: [PATCH 21/65] last-working-dir: disable chpwd_last_working_dir in subshells (#6817) --- plugins/last-working-dir/last-working-dir.plugin.zsh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh index e882b288f..53bb19e46 100644 --- a/plugins/last-working-dir/last-working-dir.plugin.zsh +++ b/plugins/last-working-dir/last-working-dir.plugin.zsh @@ -4,8 +4,10 @@ typeset -g ZSH_LAST_WORKING_DIRECTORY # Updates the last directory once directory is changed chpwd_functions+=(chpwd_last_working_dir) chpwd_last_working_dir() { - local cache_file="$ZSH_CACHE_DIR/last-working-dir" - pwd >| "$cache_file" + if [ "$ZSH_SUBSHELL" = 0 ]; then + local cache_file="$ZSH_CACHE_DIR/last-working-dir" + pwd >| "$cache_file" + fi } # Changes directory to the last working directory From 8ebf2a678507b28cf107858b316f5e874ef73d0f Mon Sep 17 00:00:00 2001 From: Giuseppe Landolfi Date: Sun, 13 May 2018 01:53:45 +0200 Subject: [PATCH 22/65] Fine-tune dirhistory plugin mappings for Mac (#6580) See https://github.com/robbyrussell/oh-my-zsh/pull/6533#issuecomment-360878060 --- plugins/dirhistory/dirhistory.plugin.zsh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh index 8138872bc..283dace29 100644 --- a/plugins/dirhistory/dirhistory.plugin.zsh +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -120,7 +120,9 @@ zle -N dirhistory_zle_dirhistory_back bindkey "\e[3D" dirhistory_zle_dirhistory_back bindkey "\e[1;3D" dirhistory_zle_dirhistory_back # Mac teminal (alt+left/right) -bindkey "^[b" dirhistory_zle_dirhistory_back +if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then + bindkey "^[b" dirhistory_zle_dirhistory_back +fi # Putty: bindkey "\e\e[D" dirhistory_zle_dirhistory_back # GNU screen: @@ -129,7 +131,9 @@ bindkey "\eO3D" dirhistory_zle_dirhistory_back zle -N dirhistory_zle_dirhistory_future bindkey "\e[3C" dirhistory_zle_dirhistory_future bindkey "\e[1;3C" dirhistory_zle_dirhistory_future -bindkey "^[f" dirhistory_zle_dirhistory_future +if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then + bindkey "^[f" dirhistory_zle_dirhistory_future +fi bindkey "\e\e[C" dirhistory_zle_dirhistory_future bindkey "\eO3C" dirhistory_zle_dirhistory_future From 0c63909ad3e8ed73d2b732396f2fd8ffffcf1b89 Mon Sep 17 00:00:00 2001 From: Ian Chesal Date: Sun, 13 May 2018 12:56:46 -0700 Subject: [PATCH 23/65] Fix default location of the virtualenvwrapper script (#6348) The `virtualenvwrapper` script has been relocated to `/usr/local/bin/virtualenvwrapper.sh`. Update the plugin to look in the new location first. See: http://virtualenvwrapper.readthedocs.io/en/latest/#introduction to confirm the change in location for this script. This addresses issue #3047 where the solution was to source this file from your zshrc. --- plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index 6cd30732e..484f18c91 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -6,6 +6,13 @@ if (( $+commands[$virtualenvwrapper] )); then unsetopt equals source ${${virtualenvwrapper}:c} } +elif [[ -f "/usr/local/bin/virtualenvwrapper.sh" ]]; then + function { + setopt local_options + unsetopt equals + virtualenvwrapper="/usr/local/bin/virtualenvwrapper.sh" + source "/usr/local/bin/virtualenvwrapper.sh" + } elif [[ -f "/etc/bash_completion.d/virtualenvwrapper" ]]; then function { setopt local_options From 919f0a42a09371c948d89c2d63593c23658811cc Mon Sep 17 00:00:00 2001 From: Quentin Nerden Date: Sun, 13 May 2018 21:58:35 +0200 Subject: [PATCH 24/65] Updated autocomplete and readme (#6720) Signed-off-by: Troy Fontaine --- plugins/docker/_docker | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/docker/_docker b/plugins/docker/_docker index 0c20cf28e..4d1b79a82 100644 --- a/plugins/docker/_docker +++ b/plugins/docker/_docker @@ -450,9 +450,9 @@ __docker_complete_events_filter() { ;; (event) local -a event_opts - event_opts=('attach' 'commit' 'connect' 'copy' 'create' 'delete' 'destroy' 'detach' 'die' 'disconnect' 'exec_create' 'exec_detach' - 'exec_start' 'export' 'health_status' 'import' 'kill' 'load' 'mount' 'oom' 'pause' 'pull' 'push' 'reload' 'rename' 'resize' 'restart' 'save' 'start' - 'stop' 'tag' 'top' 'unmount' 'unpause' 'untag' 'update') + event_opts=('attach' 'commit' 'connect' 'copy' 'create' 'delete' 'destroy' 'detach' 'die' 'disable' 'disconnect' 'enable' 'exec_create' 'exec_detach' + 'exec_start' 'export' 'health_status' 'import' 'install' 'kill' 'load' 'mount' 'oom' 'pause' 'pull' 'push' 'reload' 'remove' 'rename' 'resize' + 'restart' 'save' 'start' 'stop' 'tag' 'top' 'unmount' 'unpause' 'untag' 'update') _describe -t event-filter-opts "event filter options" event_opts && ret=0 ;; (image) @@ -3024,4 +3024,4 @@ _docker "$@" # indent-tabs-mode: nil # sh-basic-offset: 4 # End: -# vim: ft=zsh sw=4 ts=4 et \ No newline at end of file +# vim: ft=zsh sw=4 ts=4 et From 0608bb768fea1222410c5bd9b576bb1098409ffa Mon Sep 17 00:00:00 2001 From: Harald Nordgren Date: Mon, 14 May 2018 15:09:57 +0200 Subject: [PATCH 25/65] Use 'apt' instead of 'apt-get' for Ubuntu >=16.04 (#5787) --- plugins/ubuntu/ubuntu.plugin.zsh | 65 +++++++++++++++++--------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/plugins/ubuntu/ubuntu.plugin.zsh b/plugins/ubuntu/ubuntu.plugin.zsh index 082481466..f7363feb8 100644 --- a/plugins/ubuntu/ubuntu.plugin.zsh +++ b/plugins/ubuntu/ubuntu.plugin.zsh @@ -5,18 +5,21 @@ # https://github.com/trinaldi # Nicolas Jonas nextgenthemes.com # https://github.com/loctauxphilippe +# https://github.com/HaraldNordgren # # Debian, Ubuntu and friends related zsh aliases and functions for zsh +(( $+commands[apt] )) && APT=apt || APT=apt-get + alias acs='apt-cache search' compdef _acs acs='apt-cache search' alias afs='apt-file search --regexp' compdef _afs afs='apt-file search --regexp' -# These are apt-get only -alias ags='apt-get source' # asrc -compdef _ags ags='apt-get source' +# These are apt/apt-get only +alias ags="$APT source" # asrc +compdef _ags ags="$APT source" alias acp='apt-cache policy' # app compdef _acp acp='apt-cache policy' @@ -37,33 +40,33 @@ compdef _afu afu='sudo apt-file update' alias ppap='sudo ppa-purge' compdef _ppap ppap='sudo ppa-purge' -alias apg='sudo apt-get' # age - but without sudo -alias aga='sudo apt-get autoclean' # aac -alias agb='sudo apt-get build-dep' # abd -alias agc='sudo apt-get clean' # adc -alias agd='sudo apt-get dselect-upgrade' # ads -alias agi='sudo apt-get install' # ai -alias agp='sudo apt-get purge' # ap -alias agr='sudo apt-get remove' # ar -alias agu='sudo apt-get update' # ad -alias agud='sudo apt-get update && sudo apt-get full-upgrade' #adu -alias agug='sudo apt-get upgrade' # ag -alias aguu='sudo apt-get update && sudo apt-get upgrade' #adg -alias agar='sudo apt-get autoremove' +alias ag="sudo $APT" # age - but without sudo +alias aga="sudo $APT autoclean" # aac +alias agb="sudo $APT build-dep" # abd +alias agc="sudo $APT clean" # adc +alias agd="sudo $APT dselect-upgrade" # ads +alias agi="sudo $APT install" # ai +alias agp="sudo $APT purge" # ap +alias agr="sudo $APT remove" # ar +alias agu="sudo $APT update" # ad +alias agud="sudo $APT update && sudo $APT dist-upgrade" #adu +alias agug="sudo $APT upgrade" # ag +alias aguu="sudo $APT update && sudo $APT upgrade" #adg +alias agar="sudo $APT autoremove" -compdef _ag apg='sudo apt-get' -compdef _aga aga='sudo apt-get autoclean' -compdef _agb agb='sudo apt-get build-dep' -compdef _agc agc='sudo apt-get clean' -compdef _agd agd='sudo apt-get dselect-upgrade' -compdef _agi agi='sudo apt-get install' -compdef _agp agp='sudo apt-get purge' -compdef _agr agr='sudo apt-get remove' -compdef _agu agu='sudo apt-get update' -compdef _agud agud='sudo apt-get update && sudo apt-get full-upgrade' -compdef _agug agug='sudo apt-get upgrade' -compdef _aguu aguu='sudo apt-get update && sudo apt-get upgrade' -compdef _agar agar='sudo apt-get autoremove' +compdef _ag ag="sudo $APT" +compdef _aga aga="sudo $APT autoclean" +compdef _agb agb="sudo $APT build-dep" +compdef _agc agc="sudo $APT clean" +compdef _agd agd="sudo $APT dselect-upgrade" +compdef _agi agi="sudo $APT install" +compdef _agp agp="sudo $APT purge" +compdef _agr agr="sudo $APT remove" +compdef _agu agu="sudo $APT update" +compdef _agud agud="sudo $APT update && sudo $APT dist-upgrade" +compdef _agug agug="sudo $APT upgrade" +compdef _aguu aguu="sudo $APT update && sudo $APT upgrade" +compdef _agar agar="sudo $APT autoremove" # Remove ALL kernel images and headers EXCEPT the one in use alias kclean='sudo aptitude remove -P ?and(~i~nlinux-(ima|hea) \ @@ -91,8 +94,8 @@ aar() { PACKAGE=${1##*/} fi - sudo apt-add-repository $1 && sudo apt-get update - sudo apt-get install $PACKAGE + sudo apt-add-repository $1 && sudo $APT update + sudo $APT install $PACKAGE } # Prints apt history From 6876d9c5438b0e0e950fc85f736458ba55f8d65c Mon Sep 17 00:00:00 2001 From: Varun Patro Date: Mon, 14 May 2018 19:30:04 +0530 Subject: [PATCH 26/65] Update fasd.plugin.zsh (#6822) If `EDITOR` variable contains arguments to an editor such as mine: `export EDITOR=emacsclient -t -c --alternate-editor=''` Then, the editor's arguments are passed on to `fasd`. To fix this, pass the EDITOR program in quotes. --- plugins/fasd/fasd.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/fasd/fasd.plugin.zsh b/plugins/fasd/fasd.plugin.zsh index 2c302f74d..45d10858f 100644 --- a/plugins/fasd/fasd.plugin.zsh +++ b/plugins/fasd/fasd.plugin.zsh @@ -6,6 +6,6 @@ if [ $commands[fasd] ]; then # check if fasd is installed source "$fasd_cache" unset fasd_cache - alias v="f -e $EDITOR" + alias v="f -e \"$EDITOR\"" alias o='a -e open_command' fi From 2b7a41b0d2e6a67ad14f94f7cc00293491f2c3f8 Mon Sep 17 00:00:00 2001 From: Gert de Pagter Date: Tue, 15 May 2018 11:26:59 +0200 Subject: [PATCH 27/65] Update the update prompt (#6825) `[Oh My Zsh] Would you like to check for updates? [Y/n]: ` does not make sense, since answering yes will download/apply the new updates instead of checking for them. --- tools/check_for_upgrade.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index a57f6da0f..b42b87750 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -42,7 +42,7 @@ if mkdir "$ZSH/log/update.lock" 2>/dev/null; then if [ "$DISABLE_UPDATE_PROMPT" = "true" ]; then _upgrade_zsh else - echo "[Oh My Zsh] Would you like to check for updates? [Y/n]: \c" + echo "[Oh My Zsh] Would you like to update? [Y/n]: \c" read line if [[ "$line" == Y* ]] || [[ "$line" == y* ]] || [ -z "$line" ]; then _upgrade_zsh From 0aa645f8033ef86f8c8b0729a94fc54fbec49a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 15 May 2018 12:07:23 +0200 Subject: [PATCH 28/65] pyenv: search the pyenv command if not found (#6811) --- plugins/pyenv/pyenv.plugin.zsh | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/plugins/pyenv/pyenv.plugin.zsh b/plugins/pyenv/pyenv.plugin.zsh index 76880e415..dbc7da472 100644 --- a/plugins/pyenv/pyenv.plugin.zsh +++ b/plugins/pyenv/pyenv.plugin.zsh @@ -1,7 +1,29 @@ # This plugin loads pyenv into the current shell and provides prompt info via # the 'pyenv_prompt_info' function. Also loads pyenv-virtualenv if available. -if (( $+commands[pyenv] )); then +FOUND_PYENV=$+commands[pyenv] + +if [[ $FOUND_PYENV -ne 1 ]]; then + pyenvdirs=("$HOME/.pyenv" "/usr/local/pyenv" "/opt/pyenv") + for dir in $pyenvdirs; do + if [[ -d $dir/bin ]]; then + export PATH="$PATH:$dir/bin" + FOUND_PYENV=1 + break + fi + done +fi + +if [[ $FOUND_PYENV -ne 1 ]]; then + if (( $+commands[brew] )) && dir=$(brew --prefix pyenv 2>/dev/null); then + if [[ -d $dir/bin ]]; then + export PATH="$PATH:$dir/bin" + FOUND_PYENV=1 + fi + fi +fi + +if [[ $FOUND_PYENV -eq 1 ]]; then eval "$(pyenv init - zsh)" if (( $+commands[pyenv-virtualenv-init] )); then eval "$(pyenv virtualenv-init - zsh)" @@ -15,3 +37,5 @@ else echo "system: $(python -V 2>&1 | cut -f 2 -d ' ')" } fi + +unset FOUND_PYENV dir From afba4f6b9feb3a9dde4331cd2ed892c4da2df6e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 15 May 2018 21:22:47 +0200 Subject: [PATCH 29/65] Load insecure completion files if compfix is disabled We have to assume that if people disabled the compfix system they really want their completion to work, ignoring any permission issues. Fixes #5651 Fixes #5957 Fixes #6461 --- oh-my-zsh.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 7f78e4140..c0e2ba8f6 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -11,8 +11,6 @@ fpath=($ZSH/functions $ZSH/completions $fpath) # Load all stock functions (from $fpath files) called below. autoload -U compaudit compinit -: ${ZSH_DISABLE_COMPFIX:=true} - # Set ZSH_CUSTOM to the path where your custom config files # and plugins exists, or else we will use the default custom/ if [[ -z "$ZSH_CUSTOM" ]]; then @@ -74,7 +72,7 @@ if [[ $ZSH_DISABLE_COMPFIX != true ]]; then compinit -d "${ZSH_COMPDUMP}" fi else - compinit -i -d "${ZSH_COMPDUMP}" + compinit -u -d "${ZSH_COMPDUMP}" fi # Load all of the plugins that were defined in ~/.zshrc From c3493dc5ceb87a5c74d288f30fbe4bdbf4cb97c5 Mon Sep 17 00:00:00 2001 From: rco-ableton Date: Wed, 16 May 2018 17:40:42 +0200 Subject: [PATCH 30/65] Add Heroku pipelines support (#5660) --- plugins/heroku/_heroku | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/plugins/heroku/_heroku b/plugins/heroku/_heroku index 878d3ce1b..f26595e00 100644 --- a/plugins/heroku/_heroku +++ b/plugins/heroku/_heroku @@ -45,6 +45,18 @@ _1st_arguments=( "logs\:drains":"manage syslog drains" "maintenance\:on":"put the app into maintenance mode" "maintenance\:off":"take the app out of maintenance mode" + "pipelines":"list pipelines you have access to" + "pipelines\:add":"add this app to a pipeline" + "pipelines\:create":"create a new pipeline" + "pipelines\:destroy":"destroy a pipeline" + "pipelines\:diff":"compares the latest release of this app to its downstream app(s)" + "pipelines\:info":"show list of apps in a pipeline" + "pipelines\:list":"list pipelines you have access to" + "pipelines\:open":"open a pipeline in dashboard" + "pipelines\:promote":"promote the latest release of this app to its downstream app(s)" + "pipelines\:remove":"remove this app from its pipeline" + "pipelines\:rename":"rename a pipeline" + "pipelines\:update":"update this app's stage in a pipeline" "pg\:credentials":"display the DATABASE credentials" "pg\:diagnose":"run diagnostics report on DATABASE" "pg\:info":"display database information" @@ -131,6 +143,41 @@ case "$words[1]" in '(-t|--tail)'{-t,--tail}'[continually stream logs]' \ ) ;; + pipelines) + _command_args=( + '(--json)'--json'[output in json format]' \ + ) + ;; + pipelines:add) + _command_args=( + '(-s|--stage)'{-s,--stage}'[stage of first app in pipeline]' \ + ) + ;; + pipelines:create) + _command_args=( + '(-s|--stage)'{-s,--stage}'[stage of first app in pipeline]' \ + ) + ;; + pipelines:info) + _command_args=( + '(--json)'--json'[output in json format]' \ + ) + ;; + pipelines:list) + _command_args=( + '(--json)'--json'[output in json format]' \ + ) + ;; + pipelines:promote) + _command_args=( + '(-t|--to)'{-t,--to}'[comma separated list of apps to promote to]' \ + ) + ;; + pipelines:update) + _command_args=( + '(-s|--stage)'{-s,--stage}'[stage of first app in pipeline]' \ + ) + ;; pgbackups:capture) _command_args=( '(-e|--expire)'{-e,--expire}'[if no slots are available to capture, delete the oldest backup to make room]' \ From de1e3c0794ab4214412fe4f15d1e39ddffcbea42 Mon Sep 17 00:00:00 2001 From: Julien Palmas Date: Mon, 22 Jun 2015 14:19:08 +0200 Subject: [PATCH 31/65] add pg:backups command --- plugins/heroku/_heroku | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/heroku/_heroku b/plugins/heroku/_heroku index f26595e00..4122de237 100644 --- a/plugins/heroku/_heroku +++ b/plugins/heroku/_heroku @@ -72,6 +72,7 @@ _1st_arguments=( "pg\:unfollow":"stop a replica from following and make it a read/write database" "pg\:upgrade":"unfollow a database and upgrade it to the latest PostgreSQL version" "pg\:wait":"monitor database creation, exit when complete" + "pg\:backups":"Interact with built-in backups" "pgbackups":"list captured backups" "pgbackups\:url":"get a temporary URL for a backup" "pgbackups\:capture":"capture a backup from a database id" From e8aaab56b9f007cd5a285099fa101a63214622ee Mon Sep 17 00:00:00 2001 From: Frank Wittig Date: Wed, 9 Apr 2014 18:11:06 +0200 Subject: [PATCH 32/65] allow . in profile names --- plugins/aws/aws.plugin.zsh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index a326e2e01..183b0f226 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -37,9 +37,8 @@ function asp { } function aws_profiles { - reply=($(grep profile $AWS_HOME/config|sed -e 's/.*profile \([a-zA-Z0-9_-]*\).*/\1/')) + reply=($(grep profile $AWS_HOME/config|sed -e 's/.*profile \([a-zA-Z0-9_\.-]*\).*/\1/')) } - compctl -K aws_profiles asp if which aws_zsh_completer.sh &>/dev/null; then From 3dab7e46e8815838c8099040e11a7ae9a30ba03d Mon Sep 17 00:00:00 2001 From: dt-rush Date: Thu, 17 May 2018 08:45:04 -0400 Subject: [PATCH 33/65] unset chpwd_functions before running cd to work with the path, to avoid side-effects if the user has set any chpwd_functions which cause output, such as is the case if the user is using auto-ls (#6830) --- plugins/shrink-path/shrink-path.plugin.zsh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/shrink-path/shrink-path.plugin.zsh b/plugins/shrink-path/shrink-path.plugin.zsh index f111962a5..6dd6a930f 100644 --- a/plugins/shrink-path/shrink-path.plugin.zsh +++ b/plugins/shrink-path/shrink-path.plugin.zsh @@ -94,6 +94,11 @@ shrink_path () { (( tilde )) && dir=${dir/$HOME/\~} tree=(${(s:/:)dir}) ( + # unset chpwd_functions since we'll be calling `cd` and don't + # want any side-effects (eg., if the user was using auto-ls) + chpwd_functions=() + # unset chpwd since even if chpwd_functions is (), zsh will + # attempt to execute chpwd unfunction chpwd 2> /dev/null if [[ $tree[1] == \~* ]] { cd ${~tree[1]} From fbcda4d5a92e023388259652652d154558e49ef3 Mon Sep 17 00:00:00 2001 From: Andrew Baumann <0xabu@users.noreply.github.com> Date: Thu, 17 May 2018 05:46:27 -0700 Subject: [PATCH 34/65] agnoster: cut down on fork/execs improve performance when not in a repo (#6210) * agnoster: improve perf with use of $jobstates (zsh/parameter module) This saves multiple fork/execs (for the subshell and wc) each time the prompt is rendered * agnoster: compute git repo_path only when in a git repo this avoids needlessly invoking git twice every time we render the prompt * agnoster: avoid subshell when rendering prompt Rather than forking a subshell to print the prompt, construct it incrementally by appending to $PROMPT. v2: fix incorrect CURRENT_BG v3: fix bzr and hg prompting Thanks @mcornella for the help. --- themes/agnoster.zsh-theme | 46 +++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 21 deletions(-) mode change 100644 => 100755 themes/agnoster.zsh-theme diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme old mode 100644 new mode 100755 index 07546fd34..292551f44 --- a/themes/agnoster.zsh-theme +++ b/themes/agnoster.zsh-theme @@ -29,6 +29,7 @@ # A few utility functions to make it easy and re-usable to draw segmented prompts CURRENT_BG='NONE' +zmodload zsh/parameter # Special Powerline characters @@ -55,23 +56,23 @@ prompt_segment() { [[ -n $1 ]] && bg="%K{$1}" || bg="%k" [[ -n $2 ]] && fg="%F{$2}" || fg="%f" if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then - echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " + PROMPT+=" %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " else - echo -n "%{$bg%}%{$fg%} " + PROMPT+="%{$bg%}%{$fg%} " fi CURRENT_BG=$1 - [[ -n $3 ]] && echo -n $3 + [[ -n $3 ]] && PROMPT+=$3 } # End the prompt, closing any open segments prompt_end() { if [[ -n $CURRENT_BG ]]; then - echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" + PROMPT+=" %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" else - echo -n "%{%k%}" + PROMPT+="%{%k%}" fi - echo -n "%{%f%}" - CURRENT_BG='' + PROMPT+="%{%f%}" + CURRENT_BG='NONE' } ### Prompt components @@ -93,9 +94,9 @@ prompt_git() { PL_BRANCH_CHAR=$'\ue0a0' #  } local ref dirty mode repo_path - repo_path=$(git rev-parse --git-dir 2>/dev/null) if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then + repo_path=$(git rev-parse --git-dir 2>/dev/null) dirty=$(parse_git_dirty) ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git rev-parse --short HEAD 2> /dev/null)" if [[ -n $dirty ]]; then @@ -123,7 +124,7 @@ prompt_git() { zstyle ':vcs_info:*' formats ' %u%c' zstyle ':vcs_info:*' actionformats ' %u%c' vcs_info - echo -n "${ref/refs\/heads\//$PL_BRANCH_CHAR }${vcs_info_msg_0_%% }${mode}" + PROMPT+="${ref/refs\/heads\//$PL_BRANCH_CHAR }${vcs_info_msg_0_%% }${mode}" fi } @@ -135,15 +136,15 @@ prompt_bzr() { revision=`bzr log | head -n2 | tail -n1 | sed 's/^revno: //'` if [[ $status_mod -gt 0 ]] ; then prompt_segment yellow black - echo -n "bzr@"$revision "✚ " + PROMPT+="bzr@$revision ✚ " else if [[ $status_all -gt 0 ]] ; then prompt_segment yellow black - echo -n "bzr@"$revision + PROMPT+="bzr@$revision" else prompt_segment green black - echo -n "bzr@"$revision + PROMPT+="bzr@$revision" fi fi fi @@ -151,36 +152,36 @@ prompt_bzr() { prompt_hg() { (( $+commands[hg] )) || return - local rev status + local rev st branch if $(hg id >/dev/null 2>&1); then if $(hg prompt >/dev/null 2>&1); then if [[ $(hg prompt "{status|unknown}") = "?" ]]; then # if files are not added prompt_segment red white - st='±' + st=' ±' elif [[ -n $(hg prompt "{status|modified}") ]]; then # if any modification prompt_segment yellow black - st='±' + st=' ±' else # if working copy is clean prompt_segment green black fi - echo -n $(hg prompt "☿ {rev}@{branch}") $st + PROMPT+="$(hg prompt "☿ {rev}@{branch}")$st" else st="" rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g') branch=$(hg id -b 2>/dev/null) if `hg st | grep -q "^\?"`; then prompt_segment red black - st='±' + st=' ±' elif `hg st | grep -q "^[MA]"`; then prompt_segment yellow black - st='±' + st=' ±' else prompt_segment green black fi - echo -n "☿ $rev@$branch" $st + PROMPT+="☿ $rev@$branch$st" fi fi } @@ -207,7 +208,7 @@ prompt_status() { symbols=() [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" - [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" + [[ ${#jobstates} -ne 0 ]] && symbols+="%{%F{cyan}%}⚙" [[ -n "$symbols" ]] && prompt_segment black default "$symbols" } @@ -215,6 +216,7 @@ prompt_status() { ## Main prompt build_prompt() { RETVAL=$? + PROMPT='%{%f%b%k%}' prompt_status prompt_virtualenv prompt_context @@ -223,6 +225,8 @@ build_prompt() { prompt_bzr prompt_hg prompt_end + PROMPT+=' ' } -PROMPT='%{%f%b%k%}$(build_prompt) ' +autoload -U add-zsh-hook +add-zsh-hook precmd build_prompt From d79086bc87a8728121526081ad8b81e635904f55 Mon Sep 17 00:00:00 2001 From: Matt Lewin Date: Thu, 17 May 2018 10:18:20 -0400 Subject: [PATCH 35/65] Update terraform plugin with v0.11.7 commands and help (#6834) --- plugins/terraform/README.md | 8 +- plugins/terraform/_terraform | 192 ++++++++++++++++++++++++++--------- 2 files changed, 149 insertions(+), 51 deletions(-) diff --git a/plugins/terraform/README.md b/plugins/terraform/README.md index 46855e417..e5d9e47b6 100644 --- a/plugins/terraform/README.md +++ b/plugins/terraform/README.md @@ -1,7 +1,9 @@ -## atom +## Terraform oh-my-zsh plugin Plugin for Terraform, a tool from Hashicorp for managing infrastructure safely and efficiently. +Current as of Terraform v0.11.7 + ### Requirements * [Terraform](https://terraform.io/) @@ -12,8 +14,8 @@ Plugin for Terraform, a tool from Hashicorp for managing infrastructure safely a ### Expanding ZSH prompt with current Terraform workspace name -If you want to get current Terraform workspace name in your ZSH prompt open -your .zsh-theme file and in a choosen place insert: +If you want to get current Terraform workspace name in your ZSH prompt open +your .zsh-theme file and in a chosen place insert: ``` $FG[045]\ diff --git a/plugins/terraform/_terraform b/plugins/terraform/_terraform index 285d83ec7..1d1315a8a 100644 --- a/plugins/terraform/_terraform +++ b/plugins/terraform/_terraform @@ -3,91 +3,151 @@ local -a _terraform_cmds _terraform_cmds=( 'apply:Builds or changes infrastructure' + 'console:Interactive console for Terraform interpolations' 'destroy:Destroy Terraform-managed infrastructure' + 'fmt:Rewrites config files to canonical format' 'get:Download and install modules for the configuration' 'graph:Create a visual graph of Terraform resources' - 'init:Initializes Terraform configuration from a module' + 'import:Import existing infrastructure into Terraform' + 'init:Initialize a Terraform working directory' 'output:Read an output from a state file' 'plan:Generate and show an execution plan' - 'pull:Refreshes the local state copy from the remote server' - 'push:Uploads the local state to the remote server' + 'providers:Prints a tree of the providers used in the configuration' + 'push:Upload this Terraform module to Atlas to run' 'refresh:Update local state file against real resources' - 'remote:Configures remote state management' 'show:Inspect Terraform state or plan' - 'taint:Manually forcing a destroy and recreate on the next plan/apply' + 'taint:Manually mark a resource for recreation' + 'untaint:Manually unmark a resource as tainted' + 'validate:Validates the Terraform files' 'version:Prints the Terraform version' + 'workspace:Workspace management' ) __apply() { _arguments \ - '-auto-approve[Skip interactive approval of plan before applying.]' \ '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ + '-auto-approve[Skip interactive approval of plan before applying.]' \ + '-lock=[(true) Lock the state file when locking is supported.]' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ '-input=[(true) Ask for input for variables if not directly set.]' \ - '-no-color[If specified, output will not contain any color.]' \ + '-no-color[If specified, output wil be colorless.]' \ + '-parallelism=[(10) Limit the number of parallel resource operations.]' \ '-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ - '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ + '-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]' \ '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]' \ - '-target=[(resource) A Resource Address to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]' \ + '-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]' \ '-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ - '-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' + '-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]' +} + +__console() { + _arguments \ + '-state=[(terraform.tfstate) Path to read state.]' \ + '-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ + '-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]' } __destroy() { _arguments \ '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ - '-force[If set, then the destroy confirmation will not be shown.]' \ - '-input=[(true) Ask for input for variables if not directly set.]' \ - '-no-color[If specified, output will not contain any color.]' \ + '-auto-approve[Skip interactive approval before destroying.]' \ + '-force[Deprecated: same as auto-approve.]' \ + '-lock=[(true) Lock the state file when locking is supported.]' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-no-color[If specified, output will contain no color.]' \ + '-parallelism=[(10) Limit the number of concurrent operations.]' \ '-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ - '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ + '-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]' \ '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]' \ - '-target=[(resource) Instead of affecting "dependencies" will instead also destroy any resources that depend on the target(s) specified.]' \ + '-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]' \ '-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ - '-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' + '-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]' +} + +__fmt() { + _arguments \ + '-list=[(true) List files whose formatting differs (always false if using STDIN)]' \ + '-write=[(true) Write result to source file instead of STDOUT (always false if using STDIN or -check)]' \ + '-diff=[(false) Display diffs of formatting changes]' \ + '-check=[(false) Check if the input is formatted. Exit status will be 0 if all input is properly formatted and non-zero otherwise.]' } __get() { _arguments \ - '-update=[(false) If true, modules already downloaded will be checked for updates and updated if necessary.]' + '-update=[(false) If true, modules already downloaded will be checked for updates and updated if necessary.]' \ + '-no-color[If specified, output will contain no color.]' } __graph() { _arguments \ '-draw-cycles[Highlight any cycles in the graph with colored edges. This helps when diagnosing cycle errors.]' \ - '-module-depth=[(n) The maximum depth to expand modules. By default this is zero, which will not expand modules at all.]' \ - '-verbose[Generate a verbose, "worst-case" graph, with all nodes for potential operations in place.]' + '-no-color[If specified, output will contain no color.]' \ + '-type=[(plan) Type of graph to output. Can be: plan, plan-destroy, apply, validate, input, refresh.]' +} + +__import() { + _arguments \ + '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ + '-config=[(path) Path to a directory of Terraform configuration files to use to configure the provider. Defaults to pwd. If no config files are present, they must be provided via the input prompts or env vars.]' \ + '-allow-missing-config[Allow import when no resource configuration block exists.]' \ + '-input=[(true) Ask for input for variables if not directly set.]' \ + '-lock=[(true) Lock the state file when locking is supported.]' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-no-color[If specified, output will contain no color.]' \ + '-provider=[(provider) Specific provider to use for import. This is used for specifying aliases, such as "aws.eu". Defaults to the normal provider prefix of the resource being imported.]' \ + '-state=[(PATH) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]' \ + '-state-out=[(PATH) Path to the destination state file to write to. If this is not specified, the source state file will be used. This can be a new or existing path.]' \ + '-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times. This is only useful with the "-config" flag.]' \ + '-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]' } __init() { _arguments \ - '-address=[(url) URL of the remote storage server. Required for HTTP backend, optional for Atlas and Consul.]' \ - '-access-token=[(token) Authentication token for state storage server. Required for Atlas backend, optional for Consul.]' \ - '-backend=[(atlas) Specifies the type of remote backend. Must be one of Atlas, Consul, or HTTP. Defaults to atlas.]' \ - '-backend-config=[(path) Specifies the path to remote backend config file.]' \ - '-name=[(name) Name of the state file in the state storage server. Required for Atlas backend.]' \ - '-path=[(path) Path of the remote state in Consul. Required for the Consul backend.]' + '-backend=[(true) Configure the backend for this configuration.]' \ + '-backend-config=[This can be either a path to an HCL file with key/value assignments (same format as terraform.tfvars) or a 'key=value' format. This is merged with what is in the configuration file. This can be specified multiple times. The backend type must be in the configuration itself.]' \ + '-force-copy[Suppress prompts about copying state data. This is equivalent to providing a "yes" to all confirmation prompts.]' \ + '-from-module=[Copy the contents of the given module into the target directory before initialization.]' \ + '-get=[(true) Download any modules for this configuration.]' \ + '-get-plugins=[(true) Download any missing plugins for this configuration.]' \ + '-input=[(true) Ask for input if necessary. If false, will error if input was required.]' \ + '-lock=[(true) Lock the state file when locking is supported.]' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-no-color[If specified, output will contain no color.]' \ + '-plugin-dir[Directory containing plugin binaries. This overrides all default search paths for plugins, and prevents the automatic installation of plugins. This flag can be used multiple times.]' \ + '-reconfigure[Reconfigure the backend, ignoring any saved configuration.]' \ + '-upgrade=[(false) If installing modules (-get) or plugins (-get-plugins), ignore previously-downloaded objects and install the latest version allowed within configured constraints.]' \ + '-verify-plugins=[(true) Verify the authenticity and integrity of automatically downloaded plugins.]' } __output() { _arguments \ '-state=[(path) Path to the state file to read. Defaults to "terraform.tfstate".]' \ - '-module=[(module_name) The module path which has needed output. By default this is the root path. Other modules can be specified by a period-separated list.]' + '-no-color[ If specified, output will contain no color.]' \ + '-module=[(name) If specified, returns the outputs for a specific module]' \ + '-json[If specified, machine readable output will be printed in JSON format]' } __plan() { _arguments \ - '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with" .backup" extension. Set to "-" to disable backup.]' \ - '-destroy[If set, a plan will be generated to destroy all resources managed by the given configuration and state.]' \ - '-detailed-exitcode[Return a detailed exit code when the command exits. When provided, this argument changes the exit codes and their meanings to provide more granular information about what the resulting plan contains]' \ + '-destroy[() If set, a plan will be generated to destroy all resources managed by the given configuration and state.]' \ + '-detailed-exitcode[() Return detailed exit codes when the command exits. This will change the meaning of exit codes to: 0 - Succeeded, diff is empty (no changes); 1 - Errored, 2 - Succeeded; there is a diff]' \ '-input=[(true) Ask for input for variables if not directly set.]' \ - '-module-depth=[(n) Specifies the depth of modules to show in the output. This does not affect the plan itself, only the output shown. By default, this is zero. -1 will expand all.]' \ - '-no-color[If specified, output will not contain any color.]' \ + '-lock=[(true) Lock the state file when locking is supported.]' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-module-depth=[(n) Specifies the depth of modules to show in the output. This does not affect the plan itself, only the output shown. By default, this is -1, which will expand all.]' \ + '-no-color[() If specified, output will contain no color.]' \ '-out=[(path) Write a plan file to the given path. This can be used as input to the "apply" command.]' \ + '-parallelism=[(10) Limit the number of concurrent operations.]' \ '-refresh=[(true) Update state prior to checking for differences.]' \ '-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default it will use the state "terraform.tfstate" if it exists.]' \ - '-target=[(resource) A Resource Address to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]' \ + '-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]' \ '-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ - '-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' + '-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]' \ +} + +__providers() { + _arguments \ + } __push() { @@ -106,6 +166,9 @@ __push() { __refresh() { _arguments \ '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ + '-input=[(true) Ask for input for variables if not directly set.]' \ + '-lock=[(true) Lock the state file when locking is supported.]' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ '-no-color[If specified, output will not contain any color.]' \ '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]' \ @@ -114,19 +177,6 @@ __refresh() { '-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' } -__remote() { - _arguments \ - '-address=[(url) URL of the remote storage server. Required for HTTP backend, optional for Atlas and Consul.]' \ - '-access-token=[(token) Authentication token for state storage server. Required for Atlas backend, optional for Consul.]' \ - '-backend=[(atlas) Specifies the type of remote backend. Must be one of Atlas, Consul, or HTTP. Defaults to atlas.]' \ - '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ - '-disable[Disables remote state management and migrates the state to the -state path.]' \ - '-name=[(name) Name of the state file in the state storage server. Required for Atlas backend.]' \ - '-path=[(path) Path of the remote state in Consul. Required for the Consul backend.]' \ - '-pull=[(true) Controls if the remote state is pulled before disabling. This defaults to true to ensure the latest state is cached before disabling.]' \ - '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' -} - __show() { _arguments \ '-module-depth=[(n) The maximum depth to expand modules. By default this is zero, which will not expand modules at all.]' \ @@ -137,12 +187,46 @@ __taint() { _arguments \ '-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \ '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ + '-lock=[(true) Lock the state file when locking is supported.]' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ '-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \ '-no-color[If specified, output will not contain any color.]' \ '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ '-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]' } +__untaint() { + _arguments \ + '-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \ + '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]' \ + '-lock=[(true) Lock the state file when locking is supported.]' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \ + '-no-color[If specified, output will not contain any color.]' \ + '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]' \ + '-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]' +} + +__validate() { + _arguments \ + '-check-variables=[(true) If set to true (default), the command will check whether all required variables have been specified.]' \ + '-no-color[If specified, output will not contain any color.]' \ + '-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ + '-var-file=[(path) Set variables in the Terraform configuration from a file. If "terraform.tfvars" is present, it will be automatically loaded if this flag is not specified.]' +} + +__workspace() { + local -a __workspace_cmds + __workspace_cmds=( + 'delete:Delete a workspace' + 'list:List Workspaces' + 'new:Create a new workspace' + 'select:Select a workspace' + 'show:Show the name of the current workspace' + ) + _describe -t workspace "workspace commands" __workspace_cmds +} + _arguments '*:: :->command' if (( CURRENT == 1 )); then @@ -154,26 +238,38 @@ local -a _command_args case "$words[1]" in apply) __apply ;; + console) + __console;; destroy) __destroy ;; + fmt) + __fmt;; get) __get ;; graph) __graph ;; + import) + __import;; init) __init ;; output) __output ;; plan) __plan ;; + providers) + __providers ;; push) __push ;; refresh) __refresh ;; - remote) - __remote ;; show) __show ;; taint) __taint ;; + untaint) + __untaint ;; + validate) + __validate ;; + workspace) + test $CURRENT -lt 3 && __workspace ;; esac From 6dd39a11d468d40e9559d65b2721234564d8665d Mon Sep 17 00:00:00 2001 From: Nikolas Garofil Date: Thu, 17 May 2018 16:29:39 +0200 Subject: [PATCH 36/65] Docker completion updated to current offical version from the Docker-devs (#6794) This adds enable/disable and install/remove From a600ab4b8578ca0a8e6c6dae0373033b9d8c201c Mon Sep 17 00:00:00 2001 From: Mauro Porras P Date: Thu, 17 May 2018 09:30:03 -0500 Subject: [PATCH 37/65] Minor fix: "stdin" instead of "stding" (#6801) --- plugins/docker/_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/docker/_docker b/plugins/docker/_docker index 4d1b79a82..32ad4848a 100644 --- a/plugins/docker/_docker +++ b/plugins/docker/_docker @@ -889,7 +889,7 @@ __docker_container_subcommand() { $opts_help \ $opts_attach_exec_run_start \ "($help -a --attach)"{-a,--attach}"[Attach container's stdout/stderr and forward all signals]" \ - "($help -i --interactive)"{-i,--interactive}"[Attach container's stding]" \ + "($help -i --interactive)"{-i,--interactive}"[Attach container's stdin]" \ "($help -)*:containers:__docker_complete_stopped_containers" && ret=0 ;; (stats) From 2956e7820ee1dd7111084a291722c12aea01bb5c Mon Sep 17 00:00:00 2001 From: Lorenzo Bolla Date: Sun, 20 May 2018 13:46:27 +0100 Subject: [PATCH 38/65] Fix 6843 Cache kubectl completion script to file to speed up sourcing --- plugins/kubectl/kubectl.plugin.zsh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh index ec1321d8b..f4062186a 100644 --- a/plugins/kubectl/kubectl.plugin.zsh +++ b/plugins/kubectl/kubectl.plugin.zsh @@ -2,8 +2,15 @@ # # Author: https://github.com/pstadler +KUBECTL_COMPLETION_FILENAME="$TMPPREFIX-kubectl-completion-zsh" + +if [[ ! -f "$KUBECTL_COMPLETION_FILENAME" ]] +then + kubectl completion zsh > "$KUBECTL_COMPLETION_FILENAME" +fi + if [ $commands[kubectl] ]; then - source <(kubectl completion zsh) + source "$KUBECTL_COMPLETION_FILENAME" fi # This command is used ALOT both below and in daily life From ee96d0cf9634f25abb69a5cec68073a015dab0a5 Mon Sep 17 00:00:00 2001 From: Lorenzo Bolla Date: Mon, 21 May 2018 00:01:55 +0100 Subject: [PATCH 39/65] Fix 6840 Check emacsclient version instead of emacs's (#6841) This is much faster. --- plugins/emacs/emacs.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/emacs/emacs.plugin.zsh b/plugins/emacs/emacs.plugin.zsh index c102a5a1e..db0ab13af 100644 --- a/plugins/emacs/emacs.plugin.zsh +++ b/plugins/emacs/emacs.plugin.zsh @@ -10,7 +10,7 @@ # - Configuration changes made at runtime are applied to all frames. -if "$ZSH/tools/require_tool.sh" emacs 24 2>/dev/null ; then +if "$ZSH/tools/require_tool.sh" emacsclient 24 2>/dev/null ; then export EMACS_PLUGIN_LAUNCHER="$ZSH/plugins/emacs/emacsclient.sh" # set EDITOR if not already defined. From 2642f0a8b4d037cd178356132e5dc59c9e90c631 Mon Sep 17 00:00:00 2001 From: Chuan Jin Date: Mon, 21 May 2018 01:02:53 +0200 Subject: [PATCH 40/65] Add git log with date (#6789) --- plugins/git/git.plugin.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index fd55be138..34598fb35 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -181,6 +181,8 @@ alias glgga='git log --graph --decorate --all' alias glgm='git log --graph --max-count=10' alias glo='git log --oneline --decorate' alias glol="git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'" +alias glod="git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'" +alias glods="git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short" alias glola="git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --all" alias glog='git log --oneline --decorate --graph' alias gloga='git log --oneline --decorate --graph --all' From 8f3737f45b4c3c05e1488a28f79c6bc29ad8fb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Wed, 23 May 2018 11:33:34 +0200 Subject: [PATCH 41/65] Revert fbcda4d The PROMPT building method clashes with other themes and plugins that modify the PROMPT variable. Also reverted the $jobstates trick due to it not working inside $PROMPT. --- themes/agnoster.zsh-theme | 42 ++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 23 deletions(-) mode change 100755 => 100644 themes/agnoster.zsh-theme diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme old mode 100755 new mode 100644 index 292551f44..b0a794f4d --- a/themes/agnoster.zsh-theme +++ b/themes/agnoster.zsh-theme @@ -29,7 +29,6 @@ # A few utility functions to make it easy and re-usable to draw segmented prompts CURRENT_BG='NONE' -zmodload zsh/parameter # Special Powerline characters @@ -56,23 +55,23 @@ prompt_segment() { [[ -n $1 ]] && bg="%K{$1}" || bg="%k" [[ -n $2 ]] && fg="%F{$2}" || fg="%f" if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then - PROMPT+=" %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " + echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " else - PROMPT+="%{$bg%}%{$fg%} " + echo -n "%{$bg%}%{$fg%} " fi CURRENT_BG=$1 - [[ -n $3 ]] && PROMPT+=$3 + [[ -n $3 ]] && echo -n $3 } # End the prompt, closing any open segments prompt_end() { if [[ -n $CURRENT_BG ]]; then - PROMPT+=" %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" + echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" else - PROMPT+="%{%k%}" + echo -n "%{%k%}" fi - PROMPT+="%{%f%}" - CURRENT_BG='NONE' + echo -n "%{%f%}" + CURRENT_BG='' } ### Prompt components @@ -124,7 +123,7 @@ prompt_git() { zstyle ':vcs_info:*' formats ' %u%c' zstyle ':vcs_info:*' actionformats ' %u%c' vcs_info - PROMPT+="${ref/refs\/heads\//$PL_BRANCH_CHAR }${vcs_info_msg_0_%% }${mode}" + echo -n "${ref/refs\/heads\//$PL_BRANCH_CHAR }${vcs_info_msg_0_%% }${mode}" fi } @@ -136,15 +135,15 @@ prompt_bzr() { revision=`bzr log | head -n2 | tail -n1 | sed 's/^revno: //'` if [[ $status_mod -gt 0 ]] ; then prompt_segment yellow black - PROMPT+="bzr@$revision ✚ " + echo -n "bzr@"$revision "✚ " else if [[ $status_all -gt 0 ]] ; then prompt_segment yellow black - PROMPT+="bzr@$revision" + echo -n "bzr@"$revision else prompt_segment green black - PROMPT+="bzr@$revision" + echo -n "bzr@"$revision fi fi fi @@ -158,30 +157,30 @@ prompt_hg() { if [[ $(hg prompt "{status|unknown}") = "?" ]]; then # if files are not added prompt_segment red white - st=' ±' + st='±' elif [[ -n $(hg prompt "{status|modified}") ]]; then # if any modification prompt_segment yellow black - st=' ±' + st='±' else # if working copy is clean prompt_segment green black fi - PROMPT+="$(hg prompt "☿ {rev}@{branch}")$st" + echo -n $(hg prompt "☿ {rev}@{branch}") $st else st="" rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g') branch=$(hg id -b 2>/dev/null) if `hg st | grep -q "^\?"`; then prompt_segment red black - st=' ±' + st='±' elif `hg st | grep -q "^[MA]"`; then prompt_segment yellow black - st=' ±' + st='±' else prompt_segment green black fi - PROMPT+="☿ $rev@$branch$st" + echo -n "☿ $rev@$branch" $st fi fi } @@ -208,7 +207,7 @@ prompt_status() { symbols=() [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" - [[ ${#jobstates} -ne 0 ]] && symbols+="%{%F{cyan}%}⚙" + [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" [[ -n "$symbols" ]] && prompt_segment black default "$symbols" } @@ -216,7 +215,6 @@ prompt_status() { ## Main prompt build_prompt() { RETVAL=$? - PROMPT='%{%f%b%k%}' prompt_status prompt_virtualenv prompt_context @@ -225,8 +223,6 @@ build_prompt() { prompt_bzr prompt_hg prompt_end - PROMPT+=' ' } -autoload -U add-zsh-hook -add-zsh-hook precmd build_prompt +PROMPT='%{%f%b%k%}$(build_prompt) ' From 3d8ee47c7a55119318d698a90f523e04fffb878d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 25 May 2018 20:44:56 +0200 Subject: [PATCH 42/65] Update README formatting --- plugins/transfer/README.md | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/plugins/transfer/README.md b/plugins/transfer/README.md index 9bf488d4e..5fa064445 100644 --- a/plugins/transfer/README.md +++ b/plugins/transfer/README.md @@ -1,8 +1,24 @@ -# `transfer.sh` plugin -transfer.sh is an easy file sharing service from the command line +# `transfer` plugin + +[`transfer.sh`](https://transfer.sh) is an easy to use file sharing service from the command line ## Usage -Example -> transfer file.txt -> transfer directory/ +Add `transfer` to your plugins array in your zshrc file: +```zsh +plugins=(... transfer) +``` + +Then you can: + +- transfer a file: + +```zsh +transfer file.txt +``` + +- transfer a whole directory (it will be automatically compressed): + +```zsh +transfer directory/ +``` From de8ef8286a88f82976bb6d4c89de0757272c7bcc Mon Sep 17 00:00:00 2001 From: Nathan Robinson Date: Fri, 25 May 2018 23:46:18 -0400 Subject: [PATCH 43/65] Remove po alias https://github.com/robbyrussell/oh-my-zsh/issues/6761 --- lib/directories.zsh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/directories.zsh b/lib/directories.zsh index a50a692c8..14064b86f 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -28,7 +28,3 @@ alias lsa='ls -lah' alias l='ls -lah' alias ll='ls -lh' alias la='ls -lAh' - -# Push and pop directories on directory stack -alias pu='pushd' -alias po='popd' From 9b11b7e9388dc8c736c321e56e29440dedfa6152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sat, 26 May 2018 18:25:47 +0200 Subject: [PATCH 44/65] Update logic to follow npm plugin convention --- plugins/kubectl/kubectl.plugin.zsh | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh index f4062186a..c4e30dacd 100644 --- a/plugins/kubectl/kubectl.plugin.zsh +++ b/plugins/kubectl/kubectl.plugin.zsh @@ -1,16 +1,13 @@ -# Autocompletion for kubectl, the command line interface for Kubernetes -# -# Author: https://github.com/pstadler +if (( $+commands[kubectl] )); then + __KUBECTL_COMPLETION_FILE="${ZSH_CACHE_DIR}/kubectl_completion" -KUBECTL_COMPLETION_FILENAME="$TMPPREFIX-kubectl-completion-zsh" + if [[ ! -f $__KUBECTL_COMPLETION_FILE ]]; then + kubectl completion zsh >! $__KUBECTL_COMPLETION_FILE + fi -if [[ ! -f "$KUBECTL_COMPLETION_FILENAME" ]] -then - kubectl completion zsh > "$KUBECTL_COMPLETION_FILENAME" -fi + [[ -f $__KUBECTL_COMPLETION_FILE ]] && source $__KUBECTL_COMPLETION_FILE -if [ $commands[kubectl] ]; then - source "$KUBECTL_COMPLETION_FILENAME" + unset __KUBECTL_COMPLETION_FILE fi # This command is used ALOT both below and in daily life From d6aeaad83d73855776f7c937ef51428523295352 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Sat, 26 May 2018 21:09:32 +0430 Subject: [PATCH 45/65] [plugin] update NPX docs (#6849) --- plugins/npx/README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/plugins/npx/README.md b/plugins/npx/README.md index 2c94e4515..1c052930b 100644 --- a/plugins/npx/README.md +++ b/plugins/npx/README.md @@ -11,7 +11,21 @@ This plugin automatically registers npx command-not-found handler if `npx` exist plugins=(.... npx) ``` -- Globally install npx binary (you need node.js installed too!) +- Globally install npx binary (npx will be auto installed with recent versions of Node.js) ```bash sudo npm install -g npx -``` \ No newline at end of file +``` + +## Note + +The shell auto-fallback doesn't auto-install plain packages. In order to get it to install something, you need to add `@`: + +``` +➜ jasmine@latest # or just `jasmine@` +npx: installed 13 in 1.896s +Randomized with seed 54385 +Started +``` + +It does it this way so folks using the fallback don't accidentally try to install regular typoes. + From c09783c2554e505cc04ef0fc7465341475050947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sat, 26 May 2018 19:02:03 +0200 Subject: [PATCH 46/65] Revert "unset chpwd_functions before running cd ... (#6830)" This reverts commit 3dab7e46e8815838c8099040e11a7ae9a30ba03d. --- plugins/shrink-path/shrink-path.plugin.zsh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/shrink-path/shrink-path.plugin.zsh b/plugins/shrink-path/shrink-path.plugin.zsh index 6dd6a930f..f111962a5 100644 --- a/plugins/shrink-path/shrink-path.plugin.zsh +++ b/plugins/shrink-path/shrink-path.plugin.zsh @@ -94,11 +94,6 @@ shrink_path () { (( tilde )) && dir=${dir/$HOME/\~} tree=(${(s:/:)dir}) ( - # unset chpwd_functions since we'll be calling `cd` and don't - # want any side-effects (eg., if the user was using auto-ls) - chpwd_functions=() - # unset chpwd since even if chpwd_functions is (), zsh will - # attempt to execute chpwd unfunction chpwd 2> /dev/null if [[ $tree[1] == \~* ]] { cd ${~tree[1]} From 66cb4005ab6cfcd6b092c1b482e767af214e83bb Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Wed, 1 Mar 2017 15:32:00 -0800 Subject: [PATCH 47/65] Update shrink-path to use cd -q for bypassing the chpwd callbacks --- plugins/shrink-path/shrink-path.plugin.zsh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/shrink-path/shrink-path.plugin.zsh b/plugins/shrink-path/shrink-path.plugin.zsh index f111962a5..e7eed1705 100644 --- a/plugins/shrink-path/shrink-path.plugin.zsh +++ b/plugins/shrink-path/shrink-path.plugin.zsh @@ -94,13 +94,12 @@ shrink_path () { (( tilde )) && dir=${dir/$HOME/\~} tree=(${(s:/:)dir}) ( - unfunction chpwd 2> /dev/null if [[ $tree[1] == \~* ]] { - cd ${~tree[1]} + cd -q ${~tree[1]} result=$tree[1] shift tree } else { - cd / + cd -q / } for dir in $tree; { if (( lastfull && $#tree == 1 )) { @@ -117,7 +116,7 @@ shrink_path () { (( short )) && break done result+="/$part" - cd $dir + cd -q $dir shift tree } echo ${result:-/} From 5896c87155f9346a2926786c6d578d0a5696d712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sat, 26 May 2018 19:31:17 +0200 Subject: [PATCH 48/65] shrink-path: match only the beginning of the directory (#6862) Fixes #6317 --- plugins/shrink-path/shrink-path.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/shrink-path/shrink-path.plugin.zsh b/plugins/shrink-path/shrink-path.plugin.zsh index e7eed1705..29e6f0deb 100644 --- a/plugins/shrink-path/shrink-path.plugin.zsh +++ b/plugins/shrink-path/shrink-path.plugin.zsh @@ -88,10 +88,10 @@ shrink_path () { if (( named )) { for part in ${(k)nameddirs}; { - [[ $dir == ${nameddirs[$part]}(/*|) ]] && dir=${dir/${nameddirs[$part]}/\~$part} + [[ $dir == ${nameddirs[$part]}(/*|) ]] && dir=${dir/#${nameddirs[$part]}/\~$part} } } - (( tilde )) && dir=${dir/$HOME/\~} + (( tilde )) && dir=${dir/#$HOME/\~} tree=(${(s:/:)dir}) ( if [[ $tree[1] == \~* ]] { From 90a5bd06ca76aff04f76a5d43a432ed9340dd78d Mon Sep 17 00:00:00 2001 From: Lorenzo Bolla Date: Sat, 26 May 2018 19:44:49 +0100 Subject: [PATCH 49/65] Prefer virtualenvwrapper_lazy (#6842) This gives much faster start up times and only loads virtualenvwrapper when needed. Fix #6839 --- plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index 484f18c91..2a7c0b92a 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -1,6 +1,14 @@ virtualenvwrapper='virtualenvwrapper.sh' +virtualenvwrapper_lazy='virtualenvwrapper_lazy.sh' -if (( $+commands[$virtualenvwrapper] )); then +if (( $+commands[$virtualenvwrapper_lazy] )); then + function { + setopt local_options + unsetopt equals + virtualenvwrapper=${${virtualenvwrapper_lazy}:c} + source ${${virtualenvwrapper_lazy}:c} + } +elif (( $+commands[$virtualenvwrapper] )); then function { setopt local_options unsetopt equals From 77b924b8394344175aab0c4d78bec670ef721d93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sat, 26 May 2018 21:23:35 +0200 Subject: [PATCH 50/65] Give more helpful message and disable purge of caches This error message will give information on what exactly has happened and how to either solve ownership and permissions or disable the check entirely. Also gets rid of the purge of compinit caches since with the current logic insecure completion directories are ignored and therefore haven't tainted the cached files. --- lib/compfix.zsh | 44 ++++++++++++++------------------------------ 1 file changed, 14 insertions(+), 30 deletions(-) diff --git a/lib/compfix.zsh b/lib/compfix.zsh index 208aaadb1..68decc1ed 100644 --- a/lib/compfix.zsh +++ b/lib/compfix.zsh @@ -2,10 +2,6 @@ # insecure ownership or permissions) by: # # * Human-readably notifying the user of these insecurities. -# * Moving away all existing completion caches to a temporary directory. Since -# any of these caches may have been generated from insecure directories, they -# are all suspect now. Failing to do so typically causes subsequent compinit() -# calls to fail with "command not found: compdef" errors. (That's bad.) function handle_completion_insecurities() { # List of the absolute paths of all unique insecure directories, split on # newline from compaudit()'s output resembling: @@ -22,39 +18,27 @@ function handle_completion_insecurities() { insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} ) # If no such directories exist, get us out of here. - if (( ! ${#insecure_dirs} )); then - print "[oh-my-zsh] No insecure completion-dependent directories detected." - return - fi + (( ! ${#insecure_dirs} )) && return # List ownership and permissions of all insecure directories. print "[oh-my-zsh] Insecure completion-dependent directories detected:" ls -ld "${(@)insecure_dirs}" - print "[oh-my-zsh] For safety, completions will be disabled until you manually fix all" - print "[oh-my-zsh] insecure directory permissions and ownership and restart oh-my-zsh." - print "[oh-my-zsh] See the above list for directories with group or other writability.\n" - # Locally enable the "NULL_GLOB" option, thus removing unmatched filename - # globs from argument lists *AND* printing no warning when doing so. Failing - # to do so prints an unreadable warning if no completion caches exist below. - setopt local_options null_glob + cat < Date: Sat, 26 May 2018 21:26:49 +0200 Subject: [PATCH 51/65] Always load secure completion directories --- oh-my-zsh.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index c0e2ba8f6..72527362f 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -63,15 +63,14 @@ if [ -z "$ZSH_COMPDUMP" ]; then fi if [[ $ZSH_DISABLE_COMPFIX != true ]]; then - # If completion insecurities exist, warn the user without enabling completions. + # If completion insecurities exist, warn the user if ! compaudit &>/dev/null; then - # This function resides in the "lib/compfix.zsh" script sourced above. handle_completion_insecurities - # Else, enable and cache completions to the desired file. - else - compinit -d "${ZSH_COMPDUMP}" fi + # Load only from secure directories + compinit -i -d "${ZSH_COMPDUMP}" else + # If the user wants it, load from all found directories compinit -u -d "${ZSH_COMPDUMP}" fi From 8bbef9180e3ba16e717a9587d0c965ab901c1226 Mon Sep 17 00:00:00 2001 From: Erwan ROUSSEL Date: Sat, 26 May 2018 22:22:22 +0200 Subject: [PATCH 52/65] Npm's plugin documentation (#6864) * Documentation for Npm plugin added * Fix style and add alias descriptions --- plugins/npm/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 plugins/npm/README.md diff --git a/plugins/npm/README.md b/plugins/npm/README.md new file mode 100644 index 000000000..202e2b0a4 --- /dev/null +++ b/plugins/npm/README.md @@ -0,0 +1,26 @@ +## npm plugin + +The npm plugin provides completion as well as adding many useful aliases. + +To use it, add npm to the plugins array of your zshrc file: +``` +plugins=(... npm) +``` + +## Aliases + +| Alias | Command | Descripton | +|:------ |:-----------------------------|:----------------------------------------------------------------| +| `npmg` | `npm i -g` | Install dependencies globally | +| `npmS` | `npm i -S` | Install and save to dependencies in your package.json | +| `npmD` | `npm i -D` | Install and save to dev-dependencies in your package.json | +| `npmE` | `PATH="$(npm bin)":"$PATH"` | Run command from node_modules folder based on current directory | +| `npmO` | `npm outdated` | Check which npm modules are outdated | +| `npmV` | `npm -v` | Check package versions | +| `npmL` | `npm list` | List installed packages | +| `npmL0` | `npm ls --depth=0` | List top-level installed packages | +| `npmst` | `npm start` | Run npm start | +| `npmt` | `npm test` | Run npm test | +| `npmR` | `npm run` | Run npm scripts | +| `npmP` | `npm publish` | Run npm publish | +| `npmI` | `npm init` | Run npm init | From ce2890bef95b4b0a5b14ed8dd50ad2f78f8dee72 Mon Sep 17 00:00:00 2001 From: Michael Fladischer Date: Mon, 28 May 2018 11:23:05 +0200 Subject: [PATCH 53/65] [plugins/vundle] Use HTTPS to clone repository. (#6857) The git protocol is likely to be blocked in some networks while HTTPS usually works. --- plugins/vundle/vundle.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/vundle/vundle.plugin.zsh b/plugins/vundle/vundle.plugin.zsh index 0f071597a..c84cacd0e 100644 --- a/plugins/vundle/vundle.plugin.zsh +++ b/plugins/vundle/vundle.plugin.zsh @@ -6,7 +6,7 @@ function vundle-init () { if [ ! -d ~/.vim/bundle/Vundle.vim/.git ] && [ ! -f ~/.vim/bundle/Vundle.vim/.git ] then - git clone git://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim + git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim echo "\n\tRead about vim configuration for vundle at https://github.com/VundleVim/Vundle.vim\n" fi } From ebda8af870acc295388ed187f0139a8bffa83196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 28 May 2018 17:09:53 +0200 Subject: [PATCH 54/65] Clarify ssh-agent settings position --- plugins/ssh-agent/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/ssh-agent/README.md b/plugins/ssh-agent/README.md index 00af42f01..85d8c8a85 100644 --- a/plugins/ssh-agent/README.md +++ b/plugins/ssh-agent/README.md @@ -11,6 +11,8 @@ plugins=(... ssh-agent) ## Instructions +**IMPORTANT: put these settings _before_ the line that sources oh-my-zsh** + To enable **agent forwarding support** add the following to your zshrc file: ```zsh From 6ace3cd18dd3cbc0e2631fa98051194b703fe4d7 Mon Sep 17 00:00:00 2001 From: Paul Ossenbruggen Date: Tue, 5 Jun 2018 06:37:20 -0700 Subject: [PATCH 55/65] add xx command to Xcode plugin. Allows quick opening of files in Xcode. (#6812) --- plugins/xcode/README.md | 6 +++++- plugins/xcode/xcode.plugin.zsh | 13 ++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/xcode/README.md b/plugins/xcode/README.md index c12ce047f..37f882638 100644 --- a/plugins/xcode/README.md +++ b/plugins/xcode/README.md @@ -19,7 +19,7 @@ plugins=(... xcode) | xcdd | Purge all temporary build information | rm -rf ~/Library/Developer/Xcode/DerivedData/* | | xcp | Show currently selected Xcode directory | xcode-select --print-path | | xcsel | Select different Xcode directory by path | sudo xcode-select --switch | - +| xx | Opens the files listed in Xcode | open -a "Xcode.app" | ## Functions @@ -29,6 +29,10 @@ plugins=(... xcode) Opens the current directory in Xcode as an Xcode project. This will open one of the `.xcworkspace` and `.xcodeproj` files that it can find in the current working directory. You can also specify a directory to look in for the Xcode files. Returns 1 if it didn't find any relevant files. +### `xx` + +Opens the files listed in Xcode, multiple files are opened in a multi-file browser. + ### `simulator` Opens the iOS Simulator from your command line, dependent on whichever is the active developer directory for Xcode. (That is, it respects the `xcsel` setting.) diff --git a/plugins/xcode/xcode.plugin.zsh b/plugins/xcode/xcode.plugin.zsh index f711c39fb..b46e05f2f 100644 --- a/plugins/xcode/xcode.plugin.zsh +++ b/plugins/xcode/xcode.plugin.zsh @@ -27,6 +27,17 @@ function xc { fi } +# Opens a file or files in the Xcode IDE. Multiple files are opened in multi-file browser +# original author: @possen +function xx { + if [[ $# == 0 ]]; then + echo "Specify file(s) to open in xcode." + return 1 + fi + echo "${xcode_files}" + open -a "Xcode.app" "$@" +} + # "XCode-SELect by Version" - select Xcode by just version number # Uses naming convention: # - different versions of Xcode are named Xcode-.app or stored @@ -70,7 +81,7 @@ function xcselv { function _omz_xcode_print_xcselv_usage { cat << EOF >&2 -Usage: +Usage: xcselv xcselv [options] From f461d21de1bd0c1394e57a2e3af69778692e4ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Wed, 6 Jun 2018 17:14:19 +0200 Subject: [PATCH 56/65] virtualenvwrapper: set $WORKON_HOME if undefined This uses the default that virtualenvwrapper.sh would set if it was called. If the user changes its value after the plugin is loaded, the plugin will work all the same. Fixes #6882 Closes #6870 Closes #6883 --- plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index 2a7c0b92a..e27c6bb76 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -7,6 +7,7 @@ if (( $+commands[$virtualenvwrapper_lazy] )); then unsetopt equals virtualenvwrapper=${${virtualenvwrapper_lazy}:c} source ${${virtualenvwrapper_lazy}:c} + [[ -z "$WORKON_HOME" ]] && WORKON_HOME="$HOME/.virtualenvs" } elif (( $+commands[$virtualenvwrapper] )); then function { From 019e0d7c71429650de33b5fb48b066ee46f37199 Mon Sep 17 00:00:00 2001 From: Andre Figueiredo Date: Sun, 10 Jun 2018 12:55:47 -0400 Subject: [PATCH 57/65] fix(typo) (#6905) *trupd* for "trizen -Sy" fixed to *trupg* --- plugins/archlinux/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/archlinux/README.md b/plugins/archlinux/README.md index c3521c523..0d1fdea3a 100644 --- a/plugins/archlinux/README.md +++ b/plugins/archlinux/README.md @@ -23,7 +23,7 @@ | trupd | trizen -Sy && sudo abs | Update and refresh the local package and ABS databases | | trupd | trizen -Sy && sudo aur | Update and refresh the local package and AUR databases | | trupd | trizen -Sy | Update and refresh the local package database | -| trupd | trizen -Syua | Sync with repositories before upgrading all packages (from AUR too) | +| trupg | trizen -Syua | Sync with repositories before upgrading all packages (from AUR too) | | trsu | trizen -Syua --no-confirm | Same as `trupg`, but without confirmation | | upgrade | trizen -Syu | Sync with repositories before upgrading packages | From 0808c0f6efaaf988ea6530645394d97fef810f01 Mon Sep 17 00:00:00 2001 From: Matteo Giaccone Date: Tue, 12 Jun 2018 18:23:31 +0200 Subject: [PATCH 58/65] Remove default for git reset (#4993) The command will do the same as before, but now you can also specify a path. Example: grh branch-name grhh tag-name --- plugins/git/git.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 34598fb35..413d780e1 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -211,8 +211,8 @@ alias grbc='git rebase --continue' alias grbi='git rebase -i' alias grbm='git rebase master' alias grbs='git rebase --skip' -alias grh='git reset HEAD' -alias grhh='git reset HEAD --hard' +alias grh='git reset' +alias grhh='git reset --hard' alias grmv='git remote rename' alias grrm='git remote remove' alias grset='git remote set-url' From 3dcf9fd662b2eb74dc84bd739ca66b8a5bf4f52b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 12 Jun 2018 18:40:31 +0200 Subject: [PATCH 59/65] Delete python completion in favor of zsh's one --- plugins/python/_python | 54 ------------------------------------------ 1 file changed, 54 deletions(-) delete mode 100644 plugins/python/_python diff --git a/plugins/python/_python b/plugins/python/_python deleted file mode 100644 index f517d4806..000000000 --- a/plugins/python/_python +++ /dev/null @@ -1,54 +0,0 @@ -#compdef python - -# Python 2.6 -# Python 3.0 - -local curcontext="$curcontext" state line expl -typeset -A opt_args - -local -a args - -if _pick_variant python3=Python\ 3 python2 --version; then - args=( - '(-bb)-b[issue warnings about str(bytes_instance), str(bytearray_instance) and comparing bytes/bytearray with str]' - '(-b)-bb[issue errors about str(bytes_instance), str(bytearray_instance) and comparing bytes/bytearray with str]' - ) -else - args=( - '-Q+[division options]:division option:(old warn warnall new)' - '(-tt)-t[issue warnings about inconsistent tab usage]' - '(-t)-tt[issue errors about inconsistent tab usage]' - '-3[warn about Python 3.x incompatibilities]' - ) -fi - -_arguments -C -s -S "$args[@]" \ - "-B[don't write .py\[co\] files on import]" \ - '(1 -)-c+[program passed in as string (terminates option list)]:python command:' \ - '-d[debug output from parser]' \ - '-E[ignore PYTHON* environment variables (such as PYTHONPATH)]' \ - '(1 * -)-h[display help information]' \ - '-i[inspect interactively after running script]' \ - '(1 * -)-m[run library module as a script (terminates option list)]:module:->modules' \ - '-O[optimize generated bytecode slightly]' \ - '-OO[remove doc-strings in addition to the -O optimizations]' \ - "-s[don't add user site directory to sys.path]" \ - "-S[don't imply 'import site' on initialization]" \ - '-u[unbuffered binary stdout and stderr]' \ - '-v[verbose (trace import statements)]' \ - '(1 * -)'{-V,--version}'[display version information]' \ - '-W+[warning control]:warning filter (action\:message\:category\:module\:lineno):(default always ignore module once error)' \ - '-x[skip first line of source, allowing use of non-Unix forms of #!cmd]' \ - '(-)1:script file:_files -g "*.py(|c|o)(-.)"' \ - '*::script argument: _normal' && return - -if [[ "$state" = modules ]]; then - local -a modules - modules=( - ${${=${(f)"$(_call_program modules $words[1] -c \ - 'from\ pydoc\ import\ help\;\ help\(\"modules\"\)')"}[2,-3]}:#\(package\)} - ) - _wanted modules expl module compadd -a modules && return -fi - -return 1 From 321200d708027b56e95525cba3d4a6bb3d86983e Mon Sep 17 00:00:00 2001 From: Peter Butkovic Date: Tue, 12 Jun 2018 19:19:59 +0200 Subject: [PATCH 60/65] added tmuxinator aliases (#3147) --- plugins/tmuxinator/tmuxinator.plugin.zsh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugins/tmuxinator/tmuxinator.plugin.zsh diff --git a/plugins/tmuxinator/tmuxinator.plugin.zsh b/plugins/tmuxinator/tmuxinator.plugin.zsh new file mode 100644 index 000000000..166fa9881 --- /dev/null +++ b/plugins/tmuxinator/tmuxinator.plugin.zsh @@ -0,0 +1,5 @@ +# aliases +alias txs='tmuxinator start' +alias txo='tmuxinator open' +alias txn='tmuxinator new' +alias txl='tmuxinator list' From 7a9bab1d77e2c22c331ce98a7245d0ba5d348353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 12 Jun 2018 19:20:10 +0200 Subject: [PATCH 61/65] Update tmuxinator completion to 03c8babb --- plugins/tmuxinator/_tmuxinator | 55 +++++++++++----------------------- 1 file changed, 18 insertions(+), 37 deletions(-) diff --git a/plugins/tmuxinator/_tmuxinator b/plugins/tmuxinator/_tmuxinator index 551267ed2..37032f8d8 100644 --- a/plugins/tmuxinator/_tmuxinator +++ b/plugins/tmuxinator/_tmuxinator @@ -1,40 +1,21 @@ -#compdef tmuxinator mux -#autoload +_tmuxinator() { + local commands projects + commands=(${(f)"$(tmuxinator commands zsh)"}) + projects=(${(f)"$(tmuxinator completions start)"}) -local curcontext="$curcontext" state line ret=1 -local -a _configs - -_arguments -C \ - '1: :->cmds' \ - '2:: :->args' && ret=0 - -_configs=(${$(echo ~/.tmuxinator/*.yml):r:t}) - -case $state in - cmds) - _values "tmuxinator command" \ - "new[create a new project file and open it in your editor]" \ - "start[start a tmux session using project's tmuxinator config]" \ - "open[create a new project file and open it in your editor]" \ - "copy[copy source_project project file to a new project called new_project]" \ - "delete[deletes the project called project_name]" \ - "debug[output the shell commands generated by a projet]" \ - "implode[deletes all existing projects!]" \ - "list[list all existing projects]" \ - "doctor[look for problems in your configuration]" \ - "help[shows this help document]" \ - "version[shows tmuxinator version number]" \ - $_configs - ret=0 - ;; - args) - case $line[1] in - start|open|copy|delete|debug) - [[ -n "$_configs" ]] && _values 'configs' $_configs - ret=0 - ;; + if (( CURRENT == 2 )); then + _describe -t commands "tmuxinator subcommands" commands + _describe -t projects "tmuxinator projects" projects + elif (( CURRENT == 3)); then + case $words[2] in + copy|debug|delete|open|start) + _arguments '*:projects:($projects)' + ;; esac - ;; -esac + fi -return ret + return +} + +compdef _tmuxinator tmuxinator mux +alias mux="tmuxinator" From be5bff2e86872c00536191265aa9fdef225af100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 12 Jun 2018 19:54:47 +0200 Subject: [PATCH 62/65] Allow FreeBSD to correctly detect number of CPUs Use the same scheme as Darwin - sysctl instead of nproc, which doesn't exist in FreeBSD Closes #2545 Co-authored-by: Daniel Bye --- plugins/bundler/bundler.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh index 6b10b78d1..ea199d09a 100644 --- a/plugins/bundler/bundler.plugin.zsh +++ b/plugins/bundler/bundler.plugin.zsh @@ -57,7 +57,7 @@ bundle_install() { if _bundler-installed && _within-bundled-project; then local bundler_version=`bundle version | cut -d' ' -f3` if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then - if [[ "$OSTYPE" = darwin* ]] + if [[ "$OSTYPE" = (darwin|freebsd)* ]] then local cores_num="$(sysctl -n hw.ncpu)" else From 09fbc163663cd814488cb4be474f034525a8cca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 12 Jun 2018 20:45:38 +0200 Subject: [PATCH 63/65] Refactor lein plugin (#6914) * Add upstream lein completion (cee9029d) * Delete lein.plugin.zsh --- plugins/lein/_lein | 69 ++++++++++++++++++++++++++++++++++++ plugins/lein/lein.plugin.zsh | 43 ---------------------- 2 files changed, 69 insertions(+), 43 deletions(-) create mode 100644 plugins/lein/_lein delete mode 100644 plugins/lein/lein.plugin.zsh diff --git a/plugins/lein/_lein b/plugins/lein/_lein new file mode 100644 index 000000000..9d022e968 --- /dev/null +++ b/plugins/lein/_lein @@ -0,0 +1,69 @@ +#compdef lein + +# Lein ZSH completion function +# Drop this somewhere in your $fpath (like /usr/share/zsh/site-functions) +# and rename it _lein + +_lein() { + if (( CURRENT > 2 )); then + # shift words so _arguments doesn't have to be concerned with second command + (( CURRENT-- )) + shift words + # use _call_function here in case it doesn't exist + _call_function 1 _lein_${words[1]} + else + _values "lein command" \ + "change[Rewrite project.clj by applying a function.]" \ + "check[Check syntax and warn on reflection.]" \ + "classpath[Print the classpath of the current project.]" \ + "clean[Remove all files from project's target-path.]" \ + "compile[Compile Clojure source into .class files.]" \ + "deploy[Build and deploy jar to remote repository.]" \ + "deps[Download all dependencies.]" \ + "do[Higher-order task to perform other tasks in succession.]" \ + "help[Display a list of tasks or help for a given task.]" \ + "install[Install the current project to the local repository.]" \ + "jar[Package up all the project's files into a jar file.]" \ + "javac[Compile Java source files.]" \ + "new[Generate project scaffolding based on a template.]" \ + "plugin[DEPRECATED. Please use the :user profile instead.]" \ + "pom[Write a pom.xml file to disk for Maven interoperability.]" \ + "release[Perform :release-tasks.]" \ + "repl[Start a repl session either with the current project or standalone.]" \ + "retest[Run only the test namespaces which failed last time around.]" \ + "run[Run a -main function with optional command-line arguments.]" \ + "search[Search remote maven repositories for matching jars.]" \ + "show-profiles[List all available profiles or display one if given an argument.]" \ + "test[Run the project's tests.]" \ + "trampoline[Run a task without nesting the project's JVM inside Leiningen's.]" \ + "uberjar[Package up the project files and dependencies into a jar file.]" \ + "update-in[Perform arbitrary transformations on your project map.]" \ + "upgrade[Upgrade Leiningen to specified version or latest stable.]" \ + "vcs[Interact with the version control system.]" \ + "version[Print version for Leiningen and the current JVM.]" \ + "with-profile[Apply the given task with the profile(s) specified.]" + fi +} + +_lein_plugin() { + _values "lein plugin commands" \ + "install[Download, package, and install plugin jarfile into ~/.lein/plugins]" \ + "uninstall[Delete the plugin jarfile: \[GROUP/\]ARTIFACT-ID VERSION]" +} + + +_lein_namespaces() { + if [ -f "./project.clj" -a -d "$1" ]; then + _values "lein valid namespaces" \ + $(find "$1" -type f -name "*.clj" -exec awk '/^\(ns */ {gsub("\\)", "", $2); print $2}' '{}' '+') + fi +} + + +_lein_run() { + _lein_namespaces "src/" +} + +_lein_test() { + _lein_namespaces "test/" +} diff --git a/plugins/lein/lein.plugin.zsh b/plugins/lein/lein.plugin.zsh deleted file mode 100644 index f4e50b447..000000000 --- a/plugins/lein/lein.plugin.zsh +++ /dev/null @@ -1,43 +0,0 @@ -function _lein_commands() { - local ret=1 state - _arguments ':subcommand:->subcommand' && ret=0 - - case $state in - subcommand) - subcommands=( - "classpath:print the classpath of the current project" - "clean:remove compiled files and dependencies from project" - "compile:ahead-of-time compile the project" - "deploy:build jar and deploy to remote repository" - "deps:download and install all dependencies" - "help:display a list of tasks or help for a given task" - "install:install the project and its dependencies in your local repository" - "int:enter an interactive task shell" - "interactive:enter an interactive task shell" - "jack-in:jack in to a clojure slime session from emacs." - "jar:create a jar file containing the compiled .class files" - "javac:compile java source files" - "new:create a new project skeleton" - "plugin:manage user-level plugins" - "pom:write a pom.xml file to disk for maven interop" - "repl:start a repl session either with the current project or standalone" - "retest:run only the test namespaces which failed last time around" - "run:run the project's -main function" - "search:search remote maven repositories for matching jars" - "swank:launch swank server for Emacs to connect" - "test:run the project's tests" - "test!:run a project's tests after cleaning and fetching dependencies" - "trampoline:run a task without nesting the project's JVM inside Leiningen's." - "uberjar:Create a jar including the contents of each of deps" - "upgrade:upgrade leiningen to the latest stable release" - "version:print leiningen's version" - ) - _describe -t subcommands 'leiningen subcommands' subcommands && ret=0 - ;; - *) _files - esac - - return ret -} - -compdef _lein_commands lein From fec0089cddf4eb6677d90561079f7a6cb0971197 Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Wed, 13 Jun 2018 01:02:48 +0100 Subject: [PATCH 64/65] Quote $ZSH where necessary in install script (#6587) Quote $ZSH where necessary in install script --- tools/install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index ad47df785..b815a9c81 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -59,7 +59,7 @@ main() { exit 1 fi fi - env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || { + env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git "$ZSH" || { printf "Error: git clone of oh-my-zsh repo failed\n" exit 1 } @@ -72,9 +72,9 @@ main() { fi printf "${BLUE}Using the Oh My Zsh template file and adding it to ~/.zshrc${NORMAL}\n" - cp $ZSH/templates/zshrc.zsh-template ~/.zshrc + cp "$ZSH"/templates/zshrc.zsh-template ~/.zshrc sed "/^export ZSH=/ c\\ - export ZSH=$ZSH + export ZSH=\"$ZSH\" " ~/.zshrc > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc From 5efa5138bf4ab168b1ca197dfdeef0e4c3ade271 Mon Sep 17 00:00:00 2001 From: Parham Alvani Date: Thu, 14 Jun 2018 23:02:15 +0430 Subject: [PATCH 65/65] silence mode of curl (#6898) Uses silence mode of curl for better autocomplete. Co-authored-by: Dominik Rimpf --- plugins/gitignore/gitignore.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/gitignore/gitignore.plugin.zsh b/plugins/gitignore/gitignore.plugin.zsh index f242169e4..15e38d3b7 100644 --- a/plugins/gitignore/gitignore.plugin.zsh +++ b/plugins/gitignore/gitignore.plugin.zsh @@ -1,7 +1,7 @@ function gi() { curl -fL https://www.gitignore.io/api/${(j:,:)@} } _gitignoreio_get_command_list() { - curl -fL https://www.gitignore.io/api/list | tr "," "\n" + curl -sfL https://www.gitignore.io/api/list | tr "," "\n" } _gitignoreio () {