feat(x/genutil): Allow creation of AppGenesis without a file lookup (#17571)
Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
co-authored by
Julien Robert
parent
aabcfb2aa0
commit
0a253f3c6d
@@ -42,6 +42,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
||||
|
||||
* (client) [#17513](https://github.com/cosmos/cosmos-sdk/pull/17513) Allow overwritting `client.toml`. Use `client.CreateClientConfig` in place of `client.ReadFromClientConfig` and provide a custom template and a custom config.
|
||||
* (x/bank) [#14224](https://github.com/cosmos/cosmos-sdk/pull/14224) Allow injection of restrictions on transfers using `AppendSendRestriction` or `PrependSendRestriction`.
|
||||
* (genutil) [#17571](https://github.com/cosmos/cosmos-sdk/pull/17571) Allow creation of `AppGenesis` without a file lookup.
|
||||
|
||||
### Improvements
|
||||
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
cmtjson "github.com/cometbft/cometbft/libs/json"
|
||||
@@ -85,11 +88,11 @@ func (ag *AppGenesis) SaveAs(file string) error {
|
||||
return os.WriteFile(file, appGenesisBytes, 0o600)
|
||||
}
|
||||
|
||||
// AppGenesisFromFile reads the AppGenesis from the provided file.
|
||||
func AppGenesisFromFile(genFile string) (*AppGenesis, error) {
|
||||
jsonBlob, err := os.ReadFile(genFile)
|
||||
// AppGenesisFromReader reads the AppGenesis from the reader.
|
||||
func AppGenesisFromReader(reader io.Reader) (*AppGenesis, error) {
|
||||
jsonBlob, err := io.ReadAll(reader)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't read AppGenesis file (%s): %w", genFile, err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var appGenesis AppGenesis
|
||||
@@ -97,7 +100,7 @@ func AppGenesisFromFile(genFile string) (*AppGenesis, error) {
|
||||
// fallback to CometBFT genesis
|
||||
var ctmGenesis cmttypes.GenesisDoc
|
||||
if err2 := cmtjson.Unmarshal(jsonBlob, &ctmGenesis); err2 != nil {
|
||||
return nil, fmt.Errorf("error unmarshalling AppGenesis at %s: %w\n failed fallback to CometBFT GenDoc: %w", genFile, err, err2)
|
||||
return nil, fmt.Errorf("error unmarshalling AppGenesis: %w\n failed fallback to CometBFT GenDoc: %w", err, err2)
|
||||
}
|
||||
|
||||
appGenesis = AppGenesis{
|
||||
@@ -118,6 +121,25 @@ func AppGenesisFromFile(genFile string) (*AppGenesis, error) {
|
||||
return &appGenesis, nil
|
||||
}
|
||||
|
||||
// AppGenesisFromFile reads the AppGenesis from the provided file.
|
||||
func AppGenesisFromFile(genFile string) (*AppGenesis, error) {
|
||||
file, err := os.Open(filepath.Clean(genFile))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
appGenesis, err := AppGenesisFromReader(bufio.NewReader(file))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to read genesis from file %s: %w", genFile, err)
|
||||
}
|
||||
|
||||
if err := file.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return appGenesis, nil
|
||||
}
|
||||
|
||||
// --------------------------
|
||||
// CometBFT Genesis Handling
|
||||
// --------------------------
|
||||
|
||||
Reference in New Issue
Block a user