package keys import ( "fmt" "io" "sigs.k8s.io/yaml" cryptokeyring "github.com/cosmos/cosmos-sdk/crypto/keyring" ) // available output formats. const ( OutputFormatText = "text" OutputFormatJSON = "json" ) type bechKeyOutFn func(k *cryptokeyring.Record) (cryptokeyring.KeyOutput, error) func printKeyringRecord(w io.Writer, k *cryptokeyring.Record, bechKeyOut bechKeyOutFn, output string) error { ko, err := bechKeyOut(k) if err != nil { return err } switch output { case OutputFormatText: if err := printTextRecords(w, []cryptokeyring.KeyOutput{ko}); err != nil { return err } case OutputFormatJSON: out, err := KeysCdc.MarshalJSON(ko) if err != nil { return err } if _, err := fmt.Fprintln(w, string(out)); err != nil { return err } } return nil } func printKeyringRecords(w io.Writer, records []*cryptokeyring.Record, output string) error { kos, err := cryptokeyring.MkAccKeysOutput(records) if err != nil { return err } switch output { case OutputFormatText: if err := printTextRecords(w, kos); err != nil { return err } case OutputFormatJSON: // TODO https://github.com/cosmos/cosmos-sdk/issues/8046 // Replace AminoCdc with Proto JSON out, err := KeysCdc.MarshalJSON(kos) if err != nil { return err } if _, err := fmt.Fprintf(w, "%s", out); err != nil { return err } } return nil } func printTextRecords(w io.Writer, kos []cryptokeyring.KeyOutput) error { out, err := yaml.Marshal(&kos) if err != nil { return err } if _, err := fmt.Fprintln(w, string(out)); err != nil { return err } return nil }