Merge pull request #6338 from thaJeztah/cleanup_formatters
cli/command: inline vars and use struct literals in formatting functions
This commit is contained in:
@ -20,15 +20,21 @@ func newFormat(source string) formatter.Format {
|
||||
|
||||
// formatWrite writes formatted checkpoints using the Context
|
||||
func formatWrite(fmtCtx formatter.Context, checkpoints []checkpoint.Summary) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
cpContext := &checkpointContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"Name": checkpointNameHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(cpContext, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, cp := range checkpoints {
|
||||
if err := format(&checkpointContext{c: cp}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return fmtCtx.Write(newCheckpointContext(), render)
|
||||
})
|
||||
}
|
||||
|
||||
type checkpointContext struct {
|
||||
@ -36,14 +42,6 @@ type checkpointContext struct {
|
||||
c checkpoint.Summary
|
||||
}
|
||||
|
||||
func newCheckpointContext() *checkpointContext {
|
||||
cpCtx := checkpointContext{}
|
||||
cpCtx.Header = formatter.SubHeaderContext{
|
||||
"Name": checkpointNameHeader,
|
||||
}
|
||||
return &cpCtx
|
||||
}
|
||||
|
||||
func (c *checkpointContext) MarshalJSON() ([]byte, error) {
|
||||
return formatter.MarshalJSON(c)
|
||||
}
|
||||
|
||||
@ -45,7 +45,18 @@ func newFormat(source string, quiet bool) formatter.Format {
|
||||
|
||||
// formatWrite writes the context
|
||||
func formatWrite(fmtCtx formatter.Context, configs []swarm.Config) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
cCtx := &configContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"ID": configIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"CreatedAt": configCreatedHeader,
|
||||
"UpdatedAt": configUpdatedHeader,
|
||||
"Labels": formatter.LabelsHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(cCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, config := range configs {
|
||||
configCtx := &configContext{c: config}
|
||||
if err := format(configCtx); err != nil {
|
||||
@ -53,21 +64,7 @@ func formatWrite(fmtCtx formatter.Context, configs []swarm.Config) error {
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return fmtCtx.Write(newConfigContext(), render)
|
||||
}
|
||||
|
||||
func newConfigContext() *configContext {
|
||||
cCtx := &configContext{}
|
||||
|
||||
cCtx.Header = formatter.SubHeaderContext{
|
||||
"ID": configIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"CreatedAt": configCreatedHeader,
|
||||
"UpdatedAt": configUpdatedHeader,
|
||||
"Labels": formatter.LabelsHeader,
|
||||
}
|
||||
return cCtx
|
||||
})
|
||||
}
|
||||
|
||||
type configContext struct {
|
||||
@ -119,7 +116,7 @@ func inspectFormatWrite(fmtCtx formatter.Context, refs []string, getRef inspect.
|
||||
if fmtCtx.Format != configInspectPrettyTemplate {
|
||||
return inspect.Inspect(fmtCtx.Output, refs, string(fmtCtx.Format), getRef)
|
||||
}
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
return fmtCtx.Write(&configInspectContext{}, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, ref := range refs {
|
||||
configI, _, err := getRef(ref)
|
||||
if err != nil {
|
||||
@ -134,8 +131,7 @@ func inspectFormatWrite(fmtCtx formatter.Context, refs []string, getRef inspect.
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return fmtCtx.Write(&configInspectContext{}, render)
|
||||
})
|
||||
}
|
||||
|
||||
type configInspectContext struct {
|
||||
|
||||
@ -37,25 +37,30 @@ func newHistoryFormat(source string, quiet bool, human bool) formatter.Format {
|
||||
|
||||
// historyWrite writes the context
|
||||
func historyWrite(fmtCtx formatter.Context, human bool, histories []image.HistoryResponseItem) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
historyCtx := &historyContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"ID": historyIDHeader,
|
||||
"CreatedSince": formatter.CreatedSinceHeader,
|
||||
"CreatedAt": formatter.CreatedAtHeader,
|
||||
"CreatedBy": createdByHeader,
|
||||
"Size": formatter.SizeHeader,
|
||||
"Comment": commentHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(historyCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, history := range histories {
|
||||
historyCtx := &historyContext{trunc: fmtCtx.Trunc, h: history, human: human}
|
||||
if err := format(historyCtx); err != nil {
|
||||
if err := format(&historyContext{
|
||||
trunc: fmtCtx.Trunc,
|
||||
h: history,
|
||||
human: human,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
historyCtx := &historyContext{}
|
||||
historyCtx.Header = formatter.SubHeaderContext{
|
||||
"ID": historyIDHeader,
|
||||
"CreatedSince": formatter.CreatedSinceHeader,
|
||||
"CreatedAt": formatter.CreatedAtHeader,
|
||||
"CreatedBy": createdByHeader,
|
||||
"Size": formatter.SizeHeader,
|
||||
"Comment": commentHeader,
|
||||
}
|
||||
return fmtCtx.Write(historyCtx, render)
|
||||
})
|
||||
}
|
||||
|
||||
type historyContext struct {
|
||||
|
||||
@ -36,28 +36,32 @@ func newFormat(source string, quiet bool) formatter.Format {
|
||||
|
||||
// formatWrite writes the context.
|
||||
func formatWrite(fmtCtx formatter.Context, networks []network.Summary) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
networkCtx := networkContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"ID": networkIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"Driver": formatter.DriverHeader,
|
||||
"Scope": formatter.ScopeHeader,
|
||||
"IPv4": ipv4Header,
|
||||
"IPv6": ipv6Header,
|
||||
"Internal": internalHeader,
|
||||
"Labels": formatter.LabelsHeader,
|
||||
"CreatedAt": formatter.CreatedAtHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(&networkCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, nw := range networks {
|
||||
networkCtx := &networkContext{trunc: fmtCtx.Trunc, n: nw}
|
||||
if err := format(networkCtx); err != nil {
|
||||
if err := format(&networkContext{
|
||||
trunc: fmtCtx.Trunc,
|
||||
n: nw,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
networkCtx := networkContext{}
|
||||
networkCtx.Header = formatter.SubHeaderContext{
|
||||
"ID": networkIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"Driver": formatter.DriverHeader,
|
||||
"Scope": formatter.ScopeHeader,
|
||||
"IPv4": ipv4Header,
|
||||
"IPv6": ipv6Header,
|
||||
"Internal": internalHeader,
|
||||
"Labels": formatter.LabelsHeader,
|
||||
"CreatedAt": formatter.CreatedAtHeader,
|
||||
}
|
||||
return fmtCtx.Write(&networkCtx, render)
|
||||
})
|
||||
}
|
||||
|
||||
type networkContext struct {
|
||||
|
||||
@ -100,27 +100,31 @@ func newFormat(source string, quiet bool) formatter.Format {
|
||||
|
||||
// formatWrite writes the context.
|
||||
func formatWrite(fmtCtx formatter.Context, nodes []swarm.Node, info system.Info) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
nodeCtx := &nodeContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"ID": nodeIDHeader,
|
||||
"Self": selfHeader,
|
||||
"Hostname": hostnameHeader,
|
||||
"Status": formatter.StatusHeader,
|
||||
"Availability": availabilityHeader,
|
||||
"ManagerStatus": managerStatusHeader,
|
||||
"EngineVersion": engineVersionHeader,
|
||||
"TLSStatus": tlsStatusHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(nodeCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, node := range nodes {
|
||||
nodeCtx := &nodeContext{n: node, info: info}
|
||||
if err := format(nodeCtx); err != nil {
|
||||
if err := format(&nodeContext{
|
||||
n: node,
|
||||
info: info,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
nodeCtx := nodeContext{}
|
||||
nodeCtx.Header = formatter.SubHeaderContext{
|
||||
"ID": nodeIDHeader,
|
||||
"Self": selfHeader,
|
||||
"Hostname": hostnameHeader,
|
||||
"Status": formatter.StatusHeader,
|
||||
"Availability": availabilityHeader,
|
||||
"ManagerStatus": managerStatusHeader,
|
||||
"EngineVersion": engineVersionHeader,
|
||||
"TLSStatus": tlsStatusHeader,
|
||||
}
|
||||
return fmtCtx.Write(&nodeCtx, render)
|
||||
})
|
||||
}
|
||||
|
||||
type nodeContext struct {
|
||||
@ -184,7 +188,7 @@ func inspectFormatWrite(fmtCtx formatter.Context, refs []string, getRef inspect.
|
||||
if fmtCtx.Format != nodeInspectPrettyTemplate {
|
||||
return inspect.Inspect(fmtCtx.Output, refs, string(fmtCtx.Format), getRef)
|
||||
}
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
return fmtCtx.Write(&nodeInspectContext{}, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, ref := range refs {
|
||||
nodeI, _, err := getRef(ref)
|
||||
if err != nil {
|
||||
@ -199,8 +203,7 @@ func inspectFormatWrite(fmtCtx formatter.Context, refs []string, getRef inspect.
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return fmtCtx.Write(&nodeInspectContext{}, render)
|
||||
})
|
||||
}
|
||||
|
||||
type nodeInspectContext struct {
|
||||
|
||||
@ -39,24 +39,28 @@ func newFormat(source string, quiet bool) formatter.Format {
|
||||
|
||||
// formatWrite writes the context
|
||||
func formatWrite(fmtCtx formatter.Context, plugins []*plugin.Plugin) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
pluginCtx := &pluginContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"ID": pluginIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"Description": formatter.DescriptionHeader,
|
||||
"Enabled": enabledHeader,
|
||||
"PluginReference": formatter.ImageHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(pluginCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, p := range plugins {
|
||||
pluginCtx := &pluginContext{trunc: fmtCtx.Trunc, p: *p}
|
||||
if err := format(pluginCtx); err != nil {
|
||||
if err := format(&pluginContext{
|
||||
trunc: fmtCtx.Trunc,
|
||||
p: *p,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
pluginCtx := pluginContext{}
|
||||
pluginCtx.Header = formatter.SubHeaderContext{
|
||||
"ID": pluginIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"Description": formatter.DescriptionHeader,
|
||||
"Enabled": enabledHeader,
|
||||
"PluginReference": formatter.ImageHeader,
|
||||
}
|
||||
return fmtCtx.Write(&pluginCtx, render)
|
||||
})
|
||||
}
|
||||
|
||||
type pluginContext struct {
|
||||
|
||||
@ -27,23 +27,27 @@ func newFormat(source string) formatter.Format {
|
||||
|
||||
// formatWrite writes the context.
|
||||
func formatWrite(fmtCtx formatter.Context, results []registrytypes.SearchResult) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
searchCtx := &searchContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"Name": formatter.NameHeader,
|
||||
"Description": formatter.DescriptionHeader,
|
||||
"StarCount": starsHeader,
|
||||
"IsOfficial": officialHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(searchCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, result := range results {
|
||||
searchCtx := &searchContext{trunc: fmtCtx.Trunc, s: result}
|
||||
if err := format(searchCtx); err != nil {
|
||||
if err := format(&searchContext{
|
||||
trunc: fmtCtx.Trunc,
|
||||
s: result,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
searchCtx := searchContext{}
|
||||
searchCtx.Header = formatter.SubHeaderContext{
|
||||
"Name": formatter.NameHeader,
|
||||
"Description": formatter.DescriptionHeader,
|
||||
"StarCount": starsHeader,
|
||||
"IsOfficial": officialHeader,
|
||||
}
|
||||
return fmtCtx.Write(&searchCtx, render)
|
||||
})
|
||||
}
|
||||
|
||||
type searchContext struct {
|
||||
|
||||
@ -44,7 +44,19 @@ func newFormat(source string, quiet bool) formatter.Format {
|
||||
|
||||
// formatWrite writes the context
|
||||
func formatWrite(fmtCtx formatter.Context, secrets []swarm.Secret) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
sCtx := &secretContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"ID": secretIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"Driver": formatter.DriverHeader,
|
||||
"CreatedAt": secretCreatedHeader,
|
||||
"UpdatedAt": secretUpdatedHeader,
|
||||
"Labels": formatter.LabelsHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(sCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, secret := range secrets {
|
||||
secretCtx := &secretContext{s: secret}
|
||||
if err := format(secretCtx); err != nil {
|
||||
@ -52,22 +64,7 @@ func formatWrite(fmtCtx formatter.Context, secrets []swarm.Secret) error {
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return fmtCtx.Write(newSecretContext(), render)
|
||||
}
|
||||
|
||||
func newSecretContext() *secretContext {
|
||||
sCtx := &secretContext{}
|
||||
|
||||
sCtx.Header = formatter.SubHeaderContext{
|
||||
"ID": secretIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"Driver": formatter.DriverHeader,
|
||||
"CreatedAt": secretCreatedHeader,
|
||||
"UpdatedAt": secretUpdatedHeader,
|
||||
"Labels": formatter.LabelsHeader,
|
||||
}
|
||||
return sCtx
|
||||
})
|
||||
}
|
||||
|
||||
type secretContext struct {
|
||||
@ -126,7 +123,7 @@ func inspectFormatWrite(fmtCtx formatter.Context, refs []string, getRef inspect.
|
||||
if fmtCtx.Format != secretInspectPrettyTemplate {
|
||||
return inspect.Inspect(fmtCtx.Output, refs, string(fmtCtx.Format), getRef)
|
||||
}
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
return fmtCtx.Write(&secretInspectContext{}, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, ref := range refs {
|
||||
secretI, _, err := getRef(ref)
|
||||
if err != nil {
|
||||
@ -141,8 +138,7 @@ func inspectFormatWrite(fmtCtx formatter.Context, refs []string, getRef inspect.
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return fmtCtx.Write(&secretInspectContext{}, render)
|
||||
})
|
||||
}
|
||||
|
||||
type secretInspectContext struct {
|
||||
|
||||
@ -222,7 +222,8 @@ func inspectFormatWrite(fmtCtx formatter.Context, refs []string, getRef, getNetw
|
||||
if fmtCtx.Format != serviceInspectPrettyTemplate {
|
||||
return inspect.Inspect(fmtCtx.Output, refs, string(fmtCtx.Format), getRef)
|
||||
}
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
|
||||
return fmtCtx.Write(&serviceInspectContext{}, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, ref := range refs {
|
||||
serviceI, _, err := getRef(ref)
|
||||
if err != nil {
|
||||
@ -232,13 +233,15 @@ func inspectFormatWrite(fmtCtx formatter.Context, refs []string, getRef, getNetw
|
||||
if !ok {
|
||||
return errors.Errorf("got wrong object to inspect")
|
||||
}
|
||||
if err := format(&serviceInspectContext{Service: service, networkNames: resolveNetworks(service, getNetwork)}); err != nil {
|
||||
if err := format(&serviceInspectContext{
|
||||
Service: service,
|
||||
networkNames: resolveNetworks(service, getNetwork),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return fmtCtx.Write(&serviceInspectContext{}, render)
|
||||
})
|
||||
}
|
||||
|
||||
type serviceInspectContext struct {
|
||||
|
||||
@ -41,27 +41,33 @@ func newTaskFormat(source string, quiet bool) formatter.Format {
|
||||
|
||||
// formatWrite writes the context.
|
||||
func formatWrite(fmtCtx formatter.Context, tasks []swarm.Task, names map[string]string, nodes map[string]string) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
taskCtx := &taskContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"ID": taskIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"Image": formatter.ImageHeader,
|
||||
"Node": nodeHeader,
|
||||
"DesiredState": desiredStateHeader,
|
||||
"CurrentState": currentStateHeader,
|
||||
"Error": formatter.ErrorHeader,
|
||||
"Ports": formatter.PortsHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(taskCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, task := range tasks {
|
||||
taskCtx := &taskContext{trunc: fmtCtx.Trunc, task: task, name: names[task.ID], node: nodes[task.ID]}
|
||||
if err := format(taskCtx); err != nil {
|
||||
if err := format(&taskContext{
|
||||
trunc: fmtCtx.Trunc,
|
||||
task: task,
|
||||
name: names[task.ID],
|
||||
node: nodes[task.ID],
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
taskCtx := taskContext{}
|
||||
taskCtx.Header = formatter.SubHeaderContext{
|
||||
"ID": taskIDHeader,
|
||||
"Name": formatter.NameHeader,
|
||||
"Image": formatter.ImageHeader,
|
||||
"Node": nodeHeader,
|
||||
"DesiredState": desiredStateHeader,
|
||||
"CurrentState": currentStateHeader,
|
||||
"Error": formatter.ErrorHeader,
|
||||
"Ports": formatter.PortsHeader,
|
||||
}
|
||||
return fmtCtx.Write(&taskCtx, render)
|
||||
})
|
||||
}
|
||||
|
||||
type taskContext struct {
|
||||
|
||||
@ -37,21 +37,23 @@ type signerInfo struct {
|
||||
|
||||
// tagWrite writes the context
|
||||
func tagWrite(fmtCtx formatter.Context, signedTagInfoList []signedTagInfo) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
trustTagCtx := &trustTagContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"SignedTag": signedTagNameHeader,
|
||||
"Digest": trustedDigestHeader,
|
||||
"Signers": signersHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(trustTagCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, signedTag := range signedTagInfoList {
|
||||
if err := format(&trustTagContext{s: signedTag}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
trustTagCtx := trustTagContext{}
|
||||
trustTagCtx.Header = formatter.SubHeaderContext{
|
||||
"SignedTag": signedTagNameHeader,
|
||||
"Digest": trustedDigestHeader,
|
||||
"Signers": signersHeader,
|
||||
}
|
||||
return fmtCtx.Write(&trustTagCtx, render)
|
||||
})
|
||||
}
|
||||
|
||||
type trustTagContext struct {
|
||||
@ -77,23 +79,25 @@ func (c *trustTagContext) Signers() string {
|
||||
|
||||
// signerInfoWrite writes the context.
|
||||
func signerInfoWrite(fmtCtx formatter.Context, signerInfoList []signerInfo) error {
|
||||
render := func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, signerInfo := range signerInfoList {
|
||||
signerInfoCtx := &signerInfoContext{
|
||||
HeaderContext: formatter.HeaderContext{
|
||||
Header: formatter.SubHeaderContext{
|
||||
"Signer": signerNameHeader,
|
||||
"Keys": keysHeader,
|
||||
},
|
||||
},
|
||||
}
|
||||
return fmtCtx.Write(signerInfoCtx, func(format func(subContext formatter.SubContext) error) error {
|
||||
for _, info := range signerInfoList {
|
||||
if err := format(&signerInfoContext{
|
||||
trunc: fmtCtx.Trunc,
|
||||
s: signerInfo,
|
||||
s: info,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
signerInfoCtx := signerInfoContext{}
|
||||
signerInfoCtx.Header = formatter.SubHeaderContext{
|
||||
"Signer": signerNameHeader,
|
||||
"Keys": keysHeader,
|
||||
}
|
||||
return fmtCtx.Write(&signerInfoCtx, render)
|
||||
})
|
||||
}
|
||||
|
||||
type signerInfoContext struct {
|
||||
|
||||
Reference in New Issue
Block a user