package output import ( "encoding/base64" apechain "git.frostfs.info/TrueCloudLab/policy-engine/pkg/chain" "github.com/nspcc-dev/neo-go/pkg/vm/stackitem" "github.com/spf13/cobra" ) const ( minPrintable = 32 maxPrintable = 127 ) func PrintChains(cmd *cobra.Command, list []stackitem.Item, decodeChain, decodeID bool) error { for _, item := range list { bytes, err := item.TryBytes() if err != nil { return err } if !decodeChain { cmd.Println(string(bytes)) continue } var chain apechain.Chain if err = chain.DecodeBytes(bytes); err != nil { cmd.PrintErrf("invalid chain format: %s\n", base64.StdEncoding.EncodeToString(bytes)) continue } raw, err := chain.MarshalJSON() if err != nil { return err } if decodeID { var printableID string for _, r := range string(chain.ID) { if minPrintable <= r && r <= maxPrintable { printableID += string(r) } else { printableID += "." } } cmd.Println(printableID, string(raw)) } else { cmd.Println(string(raw)) } } return nil }