Forráskód Böngészése

cmd/ethereum: show more helpful message if no accounts exist

Felix Lange 10 éve
szülő
commit
0bb7377ebe
3 módosított fájl, 23 hozzáadás és 9 törlés
  1. 17 2
      cmd/ethereum/main.go
  2. 4 1
      cmd/mist/main.go
  3. 2 6
      cmd/utils/flags.go

+ 17 - 2
cmd/ethereum/main.go

@@ -29,6 +29,7 @@ import (
 	"time"
 
 	"github.com/codegangsta/cli"
+	"github.com/ethereum/go-ethereum/accounts"
 	"github.com/ethereum/go-ethereum/cmd/utils"
 	"github.com/ethereum/go-ethereum/core/types"
 	"github.com/ethereum/go-ethereum/eth"
@@ -148,14 +149,28 @@ func main() {
 func run(ctx *cli.Context) {
 	fmt.Printf("Welcome to the FRONTIER\n")
 	utils.HandleInterrupt()
-	eth := utils.GetEthereum(ClientIdentifier, Version, ctx)
+	eth, err := utils.GetEthereum(ClientIdentifier, Version, ctx)
+	if err == accounts.ErrNoKeys {
+		utils.Fatalf(`No accounts configured.
+Please run 'ethereum account new' to create a new account.`)
+	} else if err != nil {
+		utils.Fatalf("%v", err)
+	}
+
 	startEth(ctx, eth)
 	// this blocks the thread
 	eth.WaitForShutdown()
 }
 
 func runjs(ctx *cli.Context) {
-	eth := utils.GetEthereum(ClientIdentifier, Version, ctx)
+	eth, err := utils.GetEthereum(ClientIdentifier, Version, ctx)
+	if err == accounts.ErrNoKeys {
+		utils.Fatalf(`No accounts configured.
+Please run 'ethereum account new' to create a new account.`)
+	} else if err != nil {
+		utils.Fatalf("%v", err)
+	}
+
 	startEth(ctx, eth)
 	repl := newJSRE(eth)
 	if len(ctx.Args()) == 0 {

+ 4 - 1
cmd/mist/main.go

@@ -95,7 +95,10 @@ func run(ctx *cli.Context) {
 	tstart := time.Now()
 
 	// TODO: show qml popup instead of exiting if initialization fails.
-	ethereum := utils.GetEthereum(ClientIdentifier, Version, ctx)
+	ethereum, err := utils.GetEthereum(ClientIdentifier, Version, ctx)
+	if err != nil {
+		utils.Fatalf("%v", err)
+	}
 	utils.StartRPC(ethereum, ctx)
 	go utils.StartEthereum(ethereum)
 	fmt.Println("initializing eth stack took", time.Since(tstart))

+ 2 - 6
cmd/utils/flags.go

@@ -157,8 +157,8 @@ func GetNodeKey(ctx *cli.Context) (key *ecdsa.PrivateKey) {
 	return key
 }
 
-func GetEthereum(clientID, version string, ctx *cli.Context) *eth.Ethereum {
-	ethereum, err := eth.New(&eth.Config{
+func GetEthereum(clientID, version string, ctx *cli.Context) (*eth.Ethereum, error) {
+	return eth.New(&eth.Config{
 		Name:           p2p.MakeName(clientID, version),
 		DataDir:        ctx.GlobalString(DataDirFlag.Name),
 		LogFile:        ctx.GlobalString(LogFileFlag.Name),
@@ -175,10 +175,6 @@ func GetEthereum(clientID, version string, ctx *cli.Context) *eth.Ethereum {
 		Dial:           true,
 		BootNodes:      ctx.GlobalString(BootnodesFlag.Name),
 	})
-	if err != nil {
-		exit(err)
-	}
-	return ethereum
 }
 
 func GetChain(ctx *cli.Context) (*core.ChainManager, ethutil.Database, ethutil.Database) {