Plugins doc updated to incorporate platform specific commands

Signed-off-by: Martin Hickey <martin.hickey@ie.ibm.com>
pull/5176/head
Martin Hickey 7 years ago
parent 66059c9a63
commit 16b5a251c6

@ -64,13 +64,22 @@ The core of a plugin is a simple YAML file named `plugin.yaml`.
Here is a plugin YAML for a plugin that adds support for Keybase operations: Here is a plugin YAML for a plugin that adds support for Keybase operations:
``` ```
name: "keybase" name: "last"
version: "0.1.0" version: "0.1.0"
usage: "Integrate Keybase.io tools with Helm" usage: "get the last release name"
description: |- description: "get the last release name""
This plugin provides Keybase services to Helm.
ignoreFlags: false ignoreFlags: false
command: "$HELM_PLUGIN_DIR/keybase.sh" command: "$HELM_BIN --host $TILLER_HOST list --short --max 1 --date -r"
platformCommand:
- os: linux
arch: i386
command: "$HELM_BIN list --short --max 1 --date -r"
- os: linux
arch: amd64
command: "$HELM_BIN list --short --max 1 --date -r"
- os: windows
arch: amd64
command: "$HELM_BIN list --short --max 1 --date -r"
``` ```
The `name` is the name of the plugin. When Helm executes it plugin, this is the The `name` is the name of the plugin. When Helm executes it plugin, this is the
@ -91,17 +100,31 @@ The `ignoreFlags` switch tells Helm to _not_ pass flags to the plugin. So if a
plugin is called with `helm myplugin --foo` and `ignoreFlags: true`, then `--foo` plugin is called with `helm myplugin --foo` and `ignoreFlags: true`, then `--foo`
is silently discarded. is silently discarded.
Finally, and most importantly, `command` is the command that this plugin will Finally, and most importantly, `platformCommand` or `command` is the command
execute when it is called. Environment variables are interpolated before the plugin that this plugin will execute when it is called. The `platformCommand` section
is executed. The pattern above illustrates the preferred way to indicate where defines the OS/Architecture specific variations of a command. The following
the plugin program lives. rules will apply in deciding which command to use:
- If `platformCommand` is present, it will be searched first.
- If both `os` and `arch` match the current platform, search will stop and the
command will be used.
- If `os` matches and there is no more specific `arch` match, the command
will be used.
- If no `platformCommand` match is found, the default `command` will be used.
- If no matches are found in `platformCommand` and no `command` is present,
Helm will exit with an error.
Environment variables are interpolated before the plugin is executed. The
pattern above illustrates the preferred way to indicate where the plugin
program lives.
There are some strategies for working with plugin commands: There are some strategies for working with plugin commands:
- If a plugin includes an executable, the executable for a `command:` should be - If a plugin includes an executable, the executable for a
packaged in the plugin directory. `platformCommand:` or a `command:` should be packaged in the plugin directory.
- The `command:` line will have any environment variables expanded before - The `platformCommand:` or `command:` line will have any environment
execution. `$HELM_PLUGIN_DIR` will point to the plugin directory. variables expanded before execution. `$HELM_PLUGIN_DIR` will point to the
plugin directory.
- The command itself is not executed in a shell. So you can't oneline a shell script. - The command itself is not executed in a shell. So you can't oneline a shell script.
- Helm injects lots of configuration into environment variables. Take a look at - Helm injects lots of configuration into environment variables. Take a look at
the environment to see what information is available. the environment to see what information is available.

Loading…
Cancel
Save