drone-yaml/yaml/pretty/secret.go

68 lines
1.5 KiB
Go
Raw Permalink Normal View History

// Copyright (c) 2019, Drone IO Inc.
// Copyright (c) 2021, Robert Kaussow <mail@thegeeklab.de>
2019-02-10 19:00:16 +00:00
2019-01-22 23:44:17 +00:00
package pretty
import (
"strings"
"github.com/drone/drone-yaml/yaml"
)
// TODO consider "!!binary |" for secret value
// helper function to pretty prints the signature resource.
func printSecret(w writer, v *yaml.Secret) {
_, _ = w.WriteString("---")
2019-01-22 23:44:17 +00:00
w.WriteTagValue("version", v.Version)
w.WriteTagValue("kind", v.Kind)
2019-03-18 02:25:35 +00:00
w.WriteTagValue("type", v.Type)
2019-01-22 23:44:17 +00:00
if len(v.Data) > 0 {
2019-02-22 03:08:33 +00:00
w.WriteTagValue("name", v.Name)
2019-01-22 23:44:17 +00:00
printData(w, v.Data)
}
if !isSecretGetEmpty(v.Get) {
2019-02-22 03:08:33 +00:00
w.WriteTagValue("name", v.Name)
_ = w.WriteByte('\n')
2019-02-22 03:08:33 +00:00
printGet(w, v.Get)
}
_ = w.WriteByte('\n')
_ = w.WriteByte('\n')
2019-01-22 23:44:17 +00:00
}
2019-02-22 03:08:33 +00:00
// helper function prints the get block.
func printGet(w writer, v yaml.SecretGet) {
w.WriteTag("get")
w.IndentIncrease()
w.WriteTagValue("path", v.Path)
w.WriteTagValue("name", v.Name)
w.WriteTagValue("key", v.Key)
w.IndentDecrease()
}
2019-03-18 02:25:35 +00:00
func printData(w writer, d string) {
2019-01-22 23:44:17 +00:00
w.WriteTag("data")
_ = w.WriteByte(' ')
_ = w.WriteByte('>')
2019-01-22 23:44:17 +00:00
w.IndentIncrease()
2019-03-18 02:25:35 +00:00
d = spaceReplacer.Replace(d)
for _, s := range chunk(d, 60) {
_ = w.WriteByte('\n')
2019-03-18 02:25:35 +00:00
w.Indent()
_, _ = w.WriteString(s)
2019-01-22 23:44:17 +00:00
}
w.IndentDecrease()
}
// replace spaces and newlines.
var spaceReplacer = strings.NewReplacer(" ", "", "\n", "")
2019-02-22 03:08:33 +00:00
// helper function returns true if the secret get
// object is empty.
func isSecretGetEmpty(v yaml.SecretGet) bool {
return v.Key == "" &&
v.Name == "" &&
v.Path == ""
}