Skip to content

Commit

Permalink
Support plugin array configs
Browse files Browse the repository at this point in the history
  • Loading branch information
toolmantim committed Jul 1, 2016
1 parent 9fd4c2a commit f989cde
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 5 deletions.
4 changes: 4 additions & 0 deletions agent/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,10 @@ func (p *Plugin) ConfigurationToEnvironment() (*shell.Environment, error) {
env = append(env, fmt.Sprintf("%s=%s", name, vv))
case int:
env = append(env, fmt.Sprintf("%s=%d", name, vv))
case []string:
for i := range vv {
env = append(env, fmt.Sprintf("%s_%d=%s", name, i, vv[i]))
}
default:
// unknown type
}
Expand Down
30 changes: 25 additions & 5 deletions agent/plugin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,15 +196,35 @@ func TestRepositoryAndSubdirectory(t *testing.T) {
func TestPluginConfigurationToEnvironment(t *testing.T) {
var env *shell.Environment
var err error
plugin := &Plugin{Location: "github.com/buildkite/plugins/docker-compose"}
plugin := &Plugin{Location: "github.com/buildkite-plugins/docker-compose-buildkite-plugin"}

plugin.Configuration = map[string]interface{}{"container": "app", "some-other-setting": "else right here"}
plugin.Configuration = map[string]interface{}{
"container": "app",
"some-other-setting": "else right here",
}
env, err = plugin.ConfigurationToEnvironment()
assert.Nil(t, err)
assert.Equal(t, env.ToSlice(), []string{"BUILDKITE_PLUGIN_DOCKER_COMPOSE_CONTAINER=app", "BUILDKITE_PLUGIN_DOCKER_COMPOSE_SOME_OTHER_SETTING=else right here"})
assert.Equal(t, env.ToSlice(), []string{
"BUILDKITE_PLUGIN_DOCKER_COMPOSE_CONTAINER=app",
"BUILDKITE_PLUGIN_DOCKER_COMPOSE_SOME_OTHER_SETTING=else right here",
})

plugin.Configuration = map[string]interface{}{"and _ with a - number": 12}
plugin.Configuration = map[string]interface{}{
"and _ with a - number": 12,
}
env, err = plugin.ConfigurationToEnvironment()
assert.Nil(t, err)
assert.Equal(t, env.ToSlice(), []string{"BUILDKITE_PLUGIN_DOCKER_COMPOSE_AND_WITH_A_NUMBER=12"})
assert.Equal(t, env.ToSlice(), []string{
"BUILDKITE_PLUGIN_DOCKER_COMPOSE_AND_WITH_A_NUMBER=12",
})

plugin.Configuration = map[string]interface{}{
"array-key": []string{ "array-val-1", "array-val-2" },
}
env, err = plugin.ConfigurationToEnvironment()
assert.Nil(t, err)
assert.Equal(t, env.ToSlice(), []string{
"BUILDKITE_PLUGIN_DOCKER_COMPOSE_ARRAY_KEY_0=array-val-1",
"BUILDKITE_PLUGIN_DOCKER_COMPOSE_ARRAY_KEY_1=array-val-2",
})
}

0 comments on commit f989cde

Please sign in to comment.