Bluemix CLI plugin SDK provides predefined plugin interface, utilities and libraries to develop plugins for Bluemix cli.
You firstly need Go installed on your machine, and set up a GOPATH. Then clone this repository into $GOPATH/src/github.com/IBM-Bluemix/bluemix-cli-sdk.
This project uses govendor to manage dependencies. Go to the project directory and run the following command to restore the dependencies into vendor folder:
$ govendor syncand then run tests:
$ go test ./...Download and install the Bluemix CLI. See instructions here.
Compile the plugin source code with go build command, for example
$ go build plugin_examples/hello.goInstall the plugin:
$ bluemix plugin install ./helloList installed plugins:
$ bluemix plugin list
# list plugin commands with '-c' flag
$ bluemix plugin list -cUninstall the plugin:
$ bluemix plugin uninstall SayHello # SayHello is the plugin nameFor more usage of Bluemix plugin management, run bluemix help plugin
Refer to plugin developer guide for how to develop a plugin.
See plugin examples here
Bluemix has a public plugin repository by default installed in Bluemix CLI. Run bluemix plugin, you can see a repository named Bluemix (https://plugins.ng.bluemix.net). The repository support multiple version of plugin. You can list all plugins in the repository by using bluemix plugin repo-plugins -r Bluemix.
To publish, update or remove your plugin in Bluemix plugin repository, you can simply create an issue on GitHub following below samples:
Example to publish a new plugin:
Title: [plugin-publish] Request to publish a new plugin 'SayHello'
Content:
- name: SayHello
description: A sample plugin to say hello
company: YYY
authors:
- name: xxx
contact: xxx@example.com
homepage: http://www.example.com/hello
version: 0.0.1
binaries:
- platform: osx
url: http://www.example.com/downloads/hello/hello-darwin-amd64-0.0.1
checksum: xxxxx
- platform: win32
url: http://www.example.com/downloads/hello/hello-windows-386-0.0.1.exe
checksum: xxxxx
- platform: win64
url: http://www.example.com/downloads/hello/hello-windows-amd64-0.0.1.exe
checksum: xxxxx
- platform: linux32
url: http://www.example.com/downloads/hello/hello-linux-386-0.0.1.exe
checksum: xxxxx
- platform: linux64
url: http://www.example.com/downloads/hello/hello-linux-amd64-0.0.1.exe
checksum: xxxxxThe following descibes each field's usage.
| Field | Description |
|---|---|
| name | Name of your plugin, must not conflict with other existing plugins in the repo. |
| description | Describe your plugin in a line or two. This description will show up when your plugin is listed on the command line. |
| company | Optional |
| authors | authors of the plugin: name: name of author; homepage: Optional link to the homepage of the author; contact: Optional ways to contact author, email, twitter, phone etc ... |
| homepage | Link to the homepage |
| version | Version number of your plugin, in [major].[minor].[build] form |
| binaries | This section has fields detailing the various binary versions of your plugin. To reach as large an audience as possible, we encourage contributors to cross-compile their plugins on as many platforms as possible. Go provides everything you need to cross-compile for different platforms. platform: The os for this binary. Supports osx, linux32, linux64, win32, win64; url: Link to the binary file itself; checksum: SHA-1 of the binary file for verification. |
Example to update a plugin:
Title: [plugin-update] Request to update plugin 'SayHello'
Content:
- name: SayHello
description: Updated description of plugin Hello
company: YYY
authors:
- name: xxx
contact: xxx@example.com
homepage: http://www.example.com/helloExample to remove a plugin:
Title: [plugin-remove] Request to remove plugin 'SayHello'
Example to submit/update a version:
Title: [plugin-version-update] Request to submit a new version of plugin 'SayHello'
Content:
- name: SayHello
version: 0.0.2
binaries:
- platform: osx
url: http://www.example.com/downloads/hello/hello-darwin-amd64-0.0.2
checksum: xxxxx
- platform: win32
url: http://www.example.com/downloads/hello/hello-windows-386-0.0.2.exe
checksum: xxxxx
- platform: win64
url: http://www.example.com/downloads/hello/hello-windows-amd64-0.0.2.exe
checksum: xxxxx
- platform: linux32
url: http://www.example.com/downloads/hello/hello-linux-386-0.0.2.exe
checksum: xxxxx
- platform: linux64
url: http://www.example.com/downloads/hello/hello-linux-amd64-0.0.2.exe
checksum: xxxxxExample to remove plugin versions:
Title: [plugin-remove] Request to remove plugin 'SayHello'
Content:
- name: SayHello
versions:
- 0.0.1
0.0.2Report problems by adding an issue on GitHub.
This project is released under version 2.0 of the Apache License