Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions apps/evm/based/cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,18 @@ func InitCmd() *cobra.Command {

// Initialize genesis without app state
err = rollgenesis.CreateGenesis(homePath, chainID, 1, proposerAddress)
genesisPath := rollgenesis.GenesisPath(homePath)
if errors.Is(err, rollgenesis.ErrGenesisExists) {
// check if existing genesis file is valid
if genesis, err := rollgenesis.LoadGenesis(homePath); err == nil {
if genesis, err := rollgenesis.LoadGenesis(genesisPath); err == nil {
if err := genesis.Validate(); err != nil {
return fmt.Errorf("existing genesis file is invalid: %w", err)
}
} else {
return fmt.Errorf("error loading existing genesis file: %w", err)
}

cmd.Printf("Genesis file already exists at %s, skipping creation.\n", homePath)
cmd.Printf("Genesis file already exists at %s, skipping creation.\n", genesisPath)
} else if err != nil {
return fmt.Errorf("error initializing genesis file: %w", err)
}
Expand Down
5 changes: 3 additions & 2 deletions apps/evm/single/cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,18 @@ func InitCmd() *cobra.Command {

// Initialize genesis without app state
err = rollgenesis.CreateGenesis(homePath, chainID, 1, proposerAddress)
genesisPath := rollgenesis.GenesisPath(homePath)
if errors.Is(err, rollgenesis.ErrGenesisExists) {
// check if existing genesis file is valid
if genesis, err := rollgenesis.LoadGenesis(homePath); err == nil {
if genesis, err := rollgenesis.LoadGenesis(genesisPath); err == nil {
if err := genesis.Validate(); err != nil {
return fmt.Errorf("existing genesis file is invalid: %w", err)
}
} else {
return fmt.Errorf("error loading existing genesis file: %w", err)
}

cmd.Printf("Genesis file already exists at %s, skipping creation.\n", homePath)
cmd.Printf("Genesis file already exists at %s, skipping creation.\n", genesisPath)
} else if err != nil {
return fmt.Errorf("error initializing genesis file: %w", err)
}
Expand Down
5 changes: 3 additions & 2 deletions apps/testapp/cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,18 @@ func InitCmd() *cobra.Command {

// Initialize genesis without app state
err = rollgenesis.CreateGenesis(homePath, chainID, 1, proposerAddress)
genesisPath := rollgenesis.GenesisPath(homePath)
if errors.Is(err, rollgenesis.ErrGenesisExists) {
// check if existing genesis file is valid
if genesis, err := rollgenesis.LoadGenesis(homePath); err == nil {
if genesis, err := rollgenesis.LoadGenesis(genesisPath); err == nil {
if err := genesis.Validate(); err != nil {
return fmt.Errorf("existing genesis file is invalid: %w", err)
}
} else {
return fmt.Errorf("error loading existing genesis file: %w", err)
}

cmd.Printf("Genesis file already exists at %s, skipping creation.\n", homePath)
cmd.Printf("Genesis file already exists at %s, skipping creation.\n", genesisPath)
} else if err != nil {
return fmt.Errorf("error initializing genesis file: %w", err)
}
Expand Down
6 changes: 6 additions & 0 deletions pkg/genesis/io.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@

var ErrGenesisExists = fmt.Errorf("genesis file already exists")

// GenesisPath returns the genesis file path from a home directory.
func GenesisPath(homePath string) string {
configDir := filepath.Join(homePath, "config")
return filepath.Join(configDir, "genesis.json")

Check warning on line 16 in pkg/genesis/io.go

View check run for this annotation

Codecov / codecov/patch

pkg/genesis/io.go#L14-L16

Added lines #L14 - L16 were not covered by tests
}

// CreateGenesis creates and saves a genesis file with the given app state.
// If the genesis file already exists, it skips the creation and returns ErrGenesisExists.
// The genesis file is saved in the config directory of the specified home path.
Expand Down
Loading