Overview
Overview
Usage
Usage
Examples
Examples
GitHub
Installation

With custom plugins

Compose a custom whoosh binary that bundles your own private or third-party plugins with the whoosh build command.

Plugins are compiled into the binary. The default whoosh binary already ships all in-tree plugins (aws, slack, rbenv + the core set). To bundle your private or third-party plugins - or compose a leaner set on top of the core - build a custom binary with the whoosh build command: it starts from the core (whoosh’s core plugins) plus each module you name. Requires the Go toolchain on PATH.

The in-tree plugin modules are added the same way as any external plugin, e.g. --with github.com/yousysadmin/whoosh/plugins/aws.

Build

# `whoosh build` ships in every whoosh binary (go install github.com/yousysadmin/whoosh/cmd/whoosh-core@latest)
whoosh build \
  --with github.com/yousysadmin/whoosh/plugins/aws \
  --with github.com/acme/[email protected] \
  -o ./whoosh

./whoosh plugins        # lists the plugins compiled in

Flags

FlagMeaning
--with module[@version]A plugin module to include (repeatable).
--replace old=./pathBuild a module from a local checkout (repeatable). Also how you build against a local whoosh: --replace github.com/yousysadmin/whoosh=..
-o, --outputOutput binary path (default whoosh).
--tagsExtra go build tags for the compile.
--whoosh-versionThe whoosh version to build against (default latest).

Building against local checkouts of both whoosh and your plugin:

whoosh build \
  --replace github.com/yousysadmin/whoosh=/path/to/whoosh \
  --with github.com/acme/myplugin \
  --replace github.com/acme/myplugin=/path/to/myplugin \
  -o ./whoosh

Private modules use your normal Go auth (GOPRIVATE + ~/.netrc or SSH insteadOf), and you can cross-compile by setting GOOS/GOARCH.

Writing a plugin

For the plugin authoring contract - actions, startup hooks, custom phases, secrets, testing - see Plugins -> Developing.

Verify

whoosh version
whoosh plugins # your plugins should be listed here