diff --git a/internal/cli/server/chains/chain.go b/internal/cli/server/chains/chain.go index 570619609d..4fc7bad5d1 100644 --- a/internal/cli/server/chains/chain.go +++ b/internal/cli/server/chains/chain.go @@ -2,7 +2,10 @@ package chains import ( "encoding/json" + "errors" + "fmt" "io/ioutil" + "os" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" @@ -21,13 +24,23 @@ var chains = map[string]*Chain{ "mumbai": mumbaiTestnet, } -func GetChain(name string) (*Chain, bool) { - chain, err := ImportFromFile(name) - if err != nil { - chain, ok := chains[name] - return chain, ok +func GetChain(name string) (*Chain, error) { + var chain *Chain + var err error + if _, fileErr := os.Stat(name); fileErr == nil { + if chain, err = ImportFromFile(name); err != nil { + return nil, fmt.Errorf("error importing chain from file: %v", err) + } + return chain, nil + } else if errors.Is(fileErr, os.ErrNotExist) { + var ok bool + if chain, ok = chains[name]; !ok { + return nil, fmt.Errorf("chain %s not found", name) + } + return chain, nil + } else { + return nil, fileErr } - return chain, true } func ImportFromFile(filename string) (*Chain, error) { diff --git a/internal/cli/server/config.go b/internal/cli/server/config.go index 9f5e4fa81f..29cb8ffa21 100644 --- a/internal/cli/server/config.go +++ b/internal/cli/server/config.go @@ -591,12 +591,9 @@ func readConfigFile(path string) (*Config, error) { } func (c *Config) loadChain() error { - if c.Developer.Enabled { - return nil - } - chain, ok := chains.GetChain(c.Chain) - if !ok { - return fmt.Errorf("chain '%s' not found", c.Chain) + chain, err := chains.GetChain(c.Chain) + if err != nil { + return err } c.chain = chain