main.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. import (
  3. "github.com/ethereum/eth-go/ethlog"
  4. "github.com/ethereum/go-ethereum/utils"
  5. "runtime"
  6. )
  7. var logger = ethlog.NewLogger("CLI")
  8. func main() {
  9. runtime.GOMAXPROCS(runtime.NumCPU())
  10. utils.HandleInterrupt()
  11. // precedence: code-internal flag default < config file < environment variables < command line
  12. Init() // parsing command line
  13. utils.InitConfig(ConfigFile, Datadir, Identifier, "ETH")
  14. utils.InitDataDir(Datadir)
  15. utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile)
  16. db := utils.NewDatabase()
  17. keyManager := utils.NewKeyManager(KeyStore, Datadir, db)
  18. // create, import, export keys
  19. utils.KeyTasks(keyManager, KeyRing, GenAddr, SecretFile, ExportDir, NonInteractive)
  20. ethereum := utils.NewEthereum(db, keyManager, UseUPnP, OutboundPort, MaxPeer)
  21. if ShowGenesis {
  22. utils.ShowGenesis(ethereum)
  23. }
  24. if StartMining {
  25. utils.StartMining(ethereum)
  26. }
  27. // better reworked as cases
  28. if StartJsConsole {
  29. InitJsConsole(ethereum)
  30. } else if len(InputFile) > 0 {
  31. ExecJsFile(ethereum, InputFile)
  32. }
  33. if StartRpc {
  34. utils.StartRpc(ethereum, RpcPort)
  35. }
  36. utils.StartEthereum(ethereum, UseSeed)
  37. // this blocks the thread
  38. ethereum.WaitForShutdown()
  39. ethlog.Flush()
  40. }