mirror of https://github.com/docker/cli.git
plugins/templates: break on newlines when printing hooks
Signed-off-by: Laura Brehm <laurabrehm@hey.com>
This commit is contained in:
parent
c23a404698
commit
867061b007
|
@ -5,6 +5,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
@ -71,18 +72,18 @@ func TemplateReplaceArg(i int) string {
|
||||||
return fmt.Sprintf(hookTemplateArg, strconv.Itoa(i))
|
return fmt.Sprintf(hookTemplateArg, strconv.Itoa(i))
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseTemplate(hookTemplate string, cmd *cobra.Command) (string, error) {
|
func ParseTemplate(hookTemplate string, cmd *cobra.Command) ([]string, error) {
|
||||||
tmpl := template.New("").Funcs(commandFunctions)
|
tmpl := template.New("").Funcs(commandFunctions)
|
||||||
tmpl, err := tmpl.Parse(hookTemplate)
|
tmpl, err := tmpl.Parse(hookTemplate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return nil, err
|
||||||
}
|
}
|
||||||
b := bytes.Buffer{}
|
b := bytes.Buffer{}
|
||||||
err = tmpl.Execute(&b, cmd)
|
err = tmpl.Execute(&b, cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return nil, err
|
||||||
}
|
}
|
||||||
return b.String(), nil
|
return strings.Split(b.String(), "\n"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var ErrHookTemplateParse = errors.New("failed to parse hook template")
|
var ErrHookTemplateParse = errors.New("failed to parse hook template")
|
||||||
|
|
|
@ -16,15 +16,15 @@ func TestParseTemplate(t *testing.T) {
|
||||||
template string
|
template string
|
||||||
flags []testFlag
|
flags []testFlag
|
||||||
args []string
|
args []string
|
||||||
expectedOutput string
|
expectedOutput []string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
template: "",
|
template: "",
|
||||||
expectedOutput: "",
|
expectedOutput: []string{""},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
template: "a plain template message",
|
template: "a plain template message",
|
||||||
expectedOutput: "a plain template message",
|
expectedOutput: []string{"a plain template message"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
template: TemplateReplaceFlagValue("tag"),
|
template: TemplateReplaceFlagValue("tag"),
|
||||||
|
@ -34,7 +34,7 @@ func TestParseTemplate(t *testing.T) {
|
||||||
value: "my-tag",
|
value: "my-tag",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expectedOutput: "my-tag",
|
expectedOutput: []string{"my-tag"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
template: TemplateReplaceFlagValue("test-one") + " " + TemplateReplaceFlagValue("test2"),
|
template: TemplateReplaceFlagValue("test-one") + " " + TemplateReplaceFlagValue("test2"),
|
||||||
|
@ -48,17 +48,21 @@ func TestParseTemplate(t *testing.T) {
|
||||||
value: "value2",
|
value: "value2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expectedOutput: "value value2",
|
expectedOutput: []string{"value value2"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
template: TemplateReplaceArg(0) + " " + TemplateReplaceArg(1),
|
template: TemplateReplaceArg(0) + " " + TemplateReplaceArg(1),
|
||||||
args: []string{"zero", "one"},
|
args: []string{"zero", "one"},
|
||||||
expectedOutput: "zero one",
|
expectedOutput: []string{"zero one"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
template: "You just pulled " + TemplateReplaceArg(0),
|
template: "You just pulled " + TemplateReplaceArg(0),
|
||||||
args: []string{"alpine"},
|
args: []string{"alpine"},
|
||||||
expectedOutput: "You just pulled alpine",
|
expectedOutput: []string{"You just pulled alpine"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
template: "one line\nanother line!",
|
||||||
|
expectedOutput: []string{"one line", "another line!"},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,6 +81,6 @@ func TestParseTemplate(t *testing.T) {
|
||||||
|
|
||||||
out, err := ParseTemplate(tc.template, testCmd)
|
out, err := ParseTemplate(tc.template, testCmd)
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
assert.Equal(t, out, tc.expectedOutput)
|
assert.DeepEqual(t, out, tc.expectedOutput)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,7 +76,7 @@ func invokeAndCollectHooks(dockerCli command.Cli, rootCmd, subCmd *cobra.Command
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
nextSteps = append(nextSteps, processedHook)
|
nextSteps = append(nextSteps, processedHook...)
|
||||||
}
|
}
|
||||||
return nextSteps
|
return nextSteps
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue