// Copyright 2021 Evmos Foundation // This file is part of Evmos' Ethermint library. // // The Ethermint library is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // The Ethermint library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE package keys import ( "fmt" "io" "sigs.k8s.io/yaml" "github.com/cosmos/cosmos-sdk/client/keys" 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 := keys.KeysCdc.MarshalJSON(ko) if err != nil { return err } if _, err := fmt.Fprintln(w, string(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 }