flags.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package main
  2. import (
  3. "bitbucket.org/kardianos/osext"
  4. "flag"
  5. "fmt"
  6. "github.com/ethereum/eth-go/ethlog"
  7. "os"
  8. "os/user"
  9. "path"
  10. "path/filepath"
  11. "runtime"
  12. )
  13. var Identifier string
  14. var KeyRing string
  15. var KeyStore string
  16. var StartRpc bool
  17. var RpcPort int
  18. var UseUPnP bool
  19. var OutboundPort string
  20. var ShowGenesis bool
  21. var AddPeer string
  22. var MaxPeer int
  23. var GenAddr bool
  24. var UseSeed bool
  25. var SecretFile string
  26. var ExportDir string
  27. var NonInteractive bool
  28. var Datadir string
  29. var LogFile string
  30. var ConfigFile string
  31. var DebugFile string
  32. var LogLevel int
  33. // flags specific to gui client
  34. var AssetPath string
  35. func defaultAssetPath() string {
  36. var assetPath string
  37. // If the current working directory is the go-ethereum dir
  38. // assume a debug build and use the source directory as
  39. // asset directory.
  40. pwd, _ := os.Getwd()
  41. if pwd == path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "ethereal") {
  42. assetPath = path.Join(pwd, "assets")
  43. } else {
  44. switch runtime.GOOS {
  45. case "darwin":
  46. // Get Binary Directory
  47. exedir, _ := osext.ExecutableFolder()
  48. assetPath = filepath.Join(exedir, "../Resources")
  49. case "linux":
  50. assetPath = "/usr/share/ethereal"
  51. case "window":
  52. fallthrough
  53. default:
  54. assetPath = "."
  55. }
  56. }
  57. return assetPath
  58. }
  59. func defaultDataDir() string {
  60. usr, _ := user.Current()
  61. return path.Join(usr.HomeDir, ".ethereal")
  62. }
  63. var defaultConfigFile = path.Join(defaultDataDir(), "conf.ini")
  64. func Init() {
  65. flag.Usage = func() {
  66. fmt.Fprintf(os.Stderr, "%s [options] [filename]:\noptions precedence: default < config file < environment variables < command line\n", os.Args[0])
  67. flag.PrintDefaults()
  68. }
  69. flag.StringVar(&Identifier, "id", "", "Custom client identifier")
  70. flag.StringVar(&KeyRing, "keyring", "", "identifier for keyring to use")
  71. flag.StringVar(&KeyStore, "keystore", "db", "system to store keyrings: db|file (db)")
  72. flag.StringVar(&OutboundPort, "port", "30303", "listening port")
  73. flag.BoolVar(&UseUPnP, "upnp", false, "enable UPnP support")
  74. flag.IntVar(&MaxPeer, "maxpeer", 10, "maximum desired peers")
  75. flag.IntVar(&RpcPort, "rpcport", 8080, "port to start json-rpc server on")
  76. flag.BoolVar(&StartRpc, "rpc", false, "start rpc server")
  77. flag.BoolVar(&NonInteractive, "y", false, "non-interactive mode (say yes to confirmations)")
  78. flag.BoolVar(&UseSeed, "seed", true, "seed peers")
  79. flag.BoolVar(&GenAddr, "genaddr", false, "create a new priv/pub key")
  80. flag.StringVar(&SecretFile, "import", "", "imports the file given (hex or mnemonic formats)")
  81. flag.StringVar(&ExportDir, "export", "", "exports the session keyring to files in the directory given")
  82. flag.StringVar(&LogFile, "logfile", "", "log file (defaults to standard output)")
  83. flag.StringVar(&Datadir, "datadir", defaultDataDir(), "specifies the datadir to use")
  84. flag.StringVar(&ConfigFile, "conf", defaultConfigFile, "config file")
  85. flag.StringVar(&DebugFile, "debug", "", "debug file (no debugging if not set)")
  86. flag.IntVar(&LogLevel, "loglevel", int(ethlog.InfoLevel), "loglevel: 0-5: silent,error,warn,info,debug,debug detail)")
  87. flag.StringVar(&AssetPath, "asset_path", defaultAssetPath(), "absolute path to GUI assets directory")
  88. flag.Parse()
  89. }