浏览代码

Merge pull request #5207 from mcornella/gb-plugin

Repost of #5176: add gb plugin
Marc Cornellà 8 年之前
父节点
当前提交
644bc641ad
共有 2 个文件被更改,包括 132 次插入0 次删除
  1. 21 0
      plugins/gb/README.md
  2. 111 0
      plugins/gb/_gb

+ 21 - 0
plugins/gb/README.md

@@ -0,0 +1,21 @@
+# `gb` plugin
+
+> A project based build tool for the Go programming language.
+
+See https://getgb.io for the full `gb` documentation
+
+* * * *
+
+- Adds completion support for all `gb` commands.
+- Also supports completion for the [`gb-vendor` plugin](https://godoc.org/github.com/constabulary/gb/cmd/gb-vendor).
+
+To use it, add `gb` to your plugins array:
+```sh
+plugins=(... gb)
+```
+
+## Caveats
+
+The `git` plugin defines an alias `gb` that usually conflicts with the `gb` program.
+If you're having trouble with it, remove it by adding `unalias gb` at the end of your
+zshrc file.

+ 111 - 0
plugins/gb/_gb

@@ -0,0 +1,111 @@
+#compdef gb
+#autoload
+
+_gb () {
+	local ret=1 state
+	_arguments -C ':command:->command' '*::options:->options' && ret=0
+
+	case $state in
+	(command)
+		local -a subcommands
+		subcommands=(
+			"build:build a package"
+			"doc:show documentation for a package or symbol"
+			"env:print project environment variables"
+			"generate:generate Go files by processing source"
+			"help:displays the help"
+			"info:info returns information about this project"
+			"list:list the packages named by the importpaths"
+			"test:test packages"
+			"vendor:manage your vendored dependencies"
+		)
+		_describe -t subcommands 'gb subcommands' subcommands && ret=0
+		;;
+	(options)
+		case $line[1] in
+		(build)
+			_arguments \
+				-f'[ignore cached packages]' \
+				-F'[do not cache packages]' \
+				-q'[decreases verbosity]' \
+				-P'[the number of build jobs to run in parallel]' \
+				-R'[sets the base of the project root search path]' \
+				-dotfile'[output a dot formatted file of the build steps]' \
+				-ldflags'["flag list" arguments to pass to the linker]' \
+				-gcflags'["arg list" arguments to pass to the compiler]' \
+				-race'[enable data race detection]' \
+				-tags'["tag list" additional build tags]'
+			;;
+		(list)
+			_arguments \
+				-f'[alternate format for the list, using the syntax of package template]' \
+				-s'[read format template from STDIN]' \
+				-json'[prints output in structured JSON format]'
+			;;
+		(test)
+			_arguments \
+				-v'[print output from test subprocess]' \
+				-ldflags'["flag list" arguments to pass to the linker]' \
+				-gcflags'["arg list" arguments to pass to the compiler]' \
+				-race'[enable data race detection]' \
+				-tags'["tag list" additional build tags]'
+			;;
+		(vendor)
+			_gb-vendor
+		esac
+		;;
+	esac
+
+	return ret
+}
+
+_gb-vendor () {
+	local curcontext="$curcontext" state line
+	_arguments -C ':command:->command' '*::options:->options'
+
+	case $state in
+	(command)
+		local -a subcommands
+		subcommands=(
+			'delete:deletes a local dependency'
+			'fetch:fetch a remote dependency'
+			'list:lists dependencies, one per line'
+			'purge:remove all unreferenced dependencies'
+			'restore:restore dependencies from the manifest'
+			'update:update a local dependency'
+		)
+		_describe -t subcommands 'gb vendor subcommands' subcommands && ret=0
+		;;
+	(options)
+		case $line[1] in
+			(delete)
+				_arguments \
+					-all'[remove all dependencies]'
+				;;
+			(fetch)
+				_arguments \
+					-branch'[fetch from a particular branch]' \
+					-no-recurse'[do not fetch recursively]' \
+					-tag'[fetch the specified tag]' \
+					-revision'[fetch the specific revision from the branch (if supplied)]' \
+					-precaire'[allow the use of insecure protocols]' \
+				;;
+			(list)
+				_arguments \
+					-f'[controls the template used for printing each manifest entry]'
+				;;
+			(restore)
+				_arguments \
+					-precaire'[allow the use of insecure protocols]'
+				;;
+			(update)
+				_arguments \
+					-all'[update all dependencies in the manifest or supply a given dependency]' \
+					-precaire'[allow the use of insecure protocols]'
+				;;
+		esac
+		;;
+	esac
+}
+
+_gb