summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Chesal <ian.chesal@gmail.com>2019-09-20 04:58:35 -0700
committerMarc Cornellà <marc.cornella@live.com>2019-09-20 13:58:35 +0200
commit6cfaa076272e08b6a81b6358b78d020e48f8a4a6 (patch)
treeee2b0255ba91c90cbf4344b7756457941002e60c
parent095d56b5ea44988c83d0be501e70f37df3d5066b (diff)
downloadzsh-6cfaa076272e08b6a81b6358b78d020e48f8a4a6.tar.gz
zsh-6cfaa076272e08b6a81b6358b78d020e48f8a4a6.tar.bz2
zsh-6cfaa076272e08b6a81b6358b78d020e48f8a4a6.zip
Add gcloud plugin (#8144)
* A gcloud plugin This PR addresses issue #6205 This adds support for loading completion for the Google Cloud SDK command line tools. It searches the known paths for an SDK and loads the provided completion if it is found. Users can supply a custom location for the SDK by setting `CLOUDSDK_HOME` in their `zshrc` before loading oh-my-zsh plugins. * Canoncial zsh and some safe guards Based on a PR review from mcornella. All off this has now been tested on the following variants: - macOS 10.14.6 - Homebrew - macOS 10.14.6 - Custom install - Ubuntu 16.04.6 LTS - apt install - Ubuntu 18.04.3 LTS - apt install - Ubuntu 18.04.3 LTS - snap classic install - CentOS 7 - yum install
-rw-r--r--plugins/gcloud/README.md24
-rw-r--r--plugins/gcloud/gcloud.plugin.zsh32
2 files changed, 56 insertions, 0 deletions
diff --git a/plugins/gcloud/README.md b/plugins/gcloud/README.md
new file mode 100644
index 000000000..e7ce0e0f1
--- /dev/null
+++ b/plugins/gcloud/README.md
@@ -0,0 +1,24 @@
+# gcloud
+
+This plugin provides completion support for the
+[Google Cloud SDK CLI](https://cloud.google.com/sdk/gcloud/).
+
+To use it, add `gcloud` to the plugins array in your zshrc file.
+
+```zsh
+plugins=(... gcloud)
+```
+
+It relies on you having installed the SDK using one of the supported options
+listed [here](https://cloud.google.com/sdk/install).
+
+## Plugin Options
+
+* Set `CLOUDSDK_HOME` in your `zshrc` file before you load oh-my-zsh if you have
+your GCloud SDK installed in a non-standard location. The plugin will use this
+as the base for your SDK if it finds it set already.
+
+* If you do not have a `python2` in your `PATH` you'll also need to set the
+`CLOUDSDK_PYTHON` environment variable at the end of your `.zshrc`. This is
+used by the SDK to call a compatible interpreter when you run one of the
+SDK commands.
diff --git a/plugins/gcloud/gcloud.plugin.zsh b/plugins/gcloud/gcloud.plugin.zsh
new file mode 100644
index 000000000..6433a7252
--- /dev/null
+++ b/plugins/gcloud/gcloud.plugin.zsh
@@ -0,0 +1,32 @@
+#####################################################
+# gcloud plugin for oh-my-zsh #
+# Author: Ian Chesal (github.com/ianchesal) #
+#####################################################
+
+if [[ -z "${CLOUDSDK_HOME}" ]]; then
+ search_locations=(
+ "$HOME/google-cloud-sdk"
+ "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk"
+ "/usr/share/google-cloud-sdk"
+ "/snap/google-cloud-sdk/current"
+ "/usr/lib64/google-cloud-sdk/"
+ )
+
+ for gcloud_sdk_location in $search_locations; do
+ if [[ -d "${gcloud_sdk_location}" ]]; then
+ CLOUDSDK_HOME="${gcloud_sdk_location}"
+ break
+ fi
+ done
+fi
+
+if (( ${+CLOUDSDK_HOME} )); then
+ if (( ! $+commands[gcloud] )); then
+ # Only source this if GCloud isn't already on the path
+ if [[ -f "${CLOUDSDK_HOME}/path.zsh.inc" ]]; then
+ source "${CLOUDSDK_HOME}/path.zsh.inc"
+ fi
+ fi
+ source "${CLOUDSDK_HOME}/completion.zsh.inc"
+ export CLOUDSDK_HOME
+fi