Skip to content

Commit c0cc22d

Browse files
authored
Merge pull request #5019 from laurazard/multiple-plugin-hooks
plugins/templates: break on newlines when printing hooks
2 parents 78012b0 + 867061b commit c0cc22d

File tree

3 files changed

+18
-13
lines changed

3 files changed

+18
-13
lines changed

cli-plugins/hooks/template.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"fmt"
77
"strconv"
8+
"strings"
89
"text/template"
910

1011
"github.com/spf13/cobra"
@@ -71,18 +72,18 @@ func TemplateReplaceArg(i int) string {
7172
return fmt.Sprintf(hookTemplateArg, strconv.Itoa(i))
7273
}
7374

74-
func ParseTemplate(hookTemplate string, cmd *cobra.Command) (string, error) {
75+
func ParseTemplate(hookTemplate string, cmd *cobra.Command) ([]string, error) {
7576
tmpl := template.New("").Funcs(commandFunctions)
7677
tmpl, err := tmpl.Parse(hookTemplate)
7778
if err != nil {
78-
return "", err
79+
return nil, err
7980
}
8081
b := bytes.Buffer{}
8182
err = tmpl.Execute(&b, cmd)
8283
if err != nil {
83-
return "", err
84+
return nil, err
8485
}
85-
return b.String(), nil
86+
return strings.Split(b.String(), "\n"), nil
8687
}
8788

8889
var ErrHookTemplateParse = errors.New("failed to parse hook template")

cli-plugins/hooks/template_test.go

+12-8
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ func TestParseTemplate(t *testing.T) {
1616
template string
1717
flags []testFlag
1818
args []string
19-
expectedOutput string
19+
expectedOutput []string
2020
}{
2121
{
2222
template: "",
23-
expectedOutput: "",
23+
expectedOutput: []string{""},
2424
},
2525
{
2626
template: "a plain template message",
27-
expectedOutput: "a plain template message",
27+
expectedOutput: []string{"a plain template message"},
2828
},
2929
{
3030
template: TemplateReplaceFlagValue("tag"),
@@ -34,7 +34,7 @@ func TestParseTemplate(t *testing.T) {
3434
value: "my-tag",
3535
},
3636
},
37-
expectedOutput: "my-tag",
37+
expectedOutput: []string{"my-tag"},
3838
},
3939
{
4040
template: TemplateReplaceFlagValue("test-one") + " " + TemplateReplaceFlagValue("test2"),
@@ -48,17 +48,21 @@ func TestParseTemplate(t *testing.T) {
4848
value: "value2",
4949
},
5050
},
51-
expectedOutput: "value value2",
51+
expectedOutput: []string{"value value2"},
5252
},
5353
{
5454
template: TemplateReplaceArg(0) + " " + TemplateReplaceArg(1),
5555
args: []string{"zero", "one"},
56-
expectedOutput: "zero one",
56+
expectedOutput: []string{"zero one"},
5757
},
5858
{
5959
template: "You just pulled " + TemplateReplaceArg(0),
6060
args: []string{"alpine"},
61-
expectedOutput: "You just pulled alpine",
61+
expectedOutput: []string{"You just pulled alpine"},
62+
},
63+
{
64+
template: "one line\nanother line!",
65+
expectedOutput: []string{"one line", "another line!"},
6266
},
6367
}
6468

@@ -77,6 +81,6 @@ func TestParseTemplate(t *testing.T) {
7781

7882
out, err := ParseTemplate(tc.template, testCmd)
7983
assert.NilError(t, err)
80-
assert.Equal(t, out, tc.expectedOutput)
84+
assert.DeepEqual(t, out, tc.expectedOutput)
8185
}
8286
}

cli-plugins/manager/hooks.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func invokeAndCollectHooks(dockerCli command.Cli, rootCmd, subCmd *cobra.Command
7676
if err != nil {
7777
continue
7878
}
79-
nextSteps = append(nextSteps, processedHook)
79+
nextSteps = append(nextSteps, processedHook...)
8080
}
8181
return nextSteps
8282
}

0 commit comments

Comments
 (0)