Przeglądaj źródła

added batch mode to console

Bas van Kervel 10 lat temu
rodzic
commit
2a0528303f
2 zmienionych plików z 30 dodań i 5 usunięć
  1. 23 1
      cmd/console/js.go
  2. 7 4
      cmd/console/main.go

+ 23 - 1
cmd/console/js.go

@@ -30,6 +30,7 @@ import (
 
 	"sort"
 
+	"github.com/codegangsta/cli"
 	"github.com/ethereum/go-ethereum/cmd/utils"
 	"github.com/ethereum/go-ethereum/common/docserver"
 	re "github.com/ethereum/go-ethereum/jsre"
@@ -329,7 +330,28 @@ func (self *jsre) welcome(ipcpath string) {
 	}
 }
 
-func (self *jsre) interactive() {
+func (self *jsre) batch(args cli.Args) {
+	statement := strings.Join(args, " ")
+
+	val, err := self.re.Run(statement)
+
+	if err != nil {
+		fmt.Printf("error: %v", err)
+	} else if val.IsDefined() {
+		fmt.Printf("%v", val)
+	}
+
+	if self.atexit != nil {
+		self.atexit()
+	}
+
+	self.re.Stop(false)
+	
+}
+
+func (self *jsre) interactive(ipcpath string) {
+	self.welcome(ipcpath)
+
 	// Read input lines.
 	prompt := make(chan string)
 	inputln := make(chan string)

+ 7 - 4
cmd/console/main.go

@@ -40,7 +40,7 @@ const (
 var (
 	gitCommit       string // set via linker flag
 	nodeNameVersion string
-	app             = utils.NewApp(Version, "the ether console")
+	app             = utils.NewApp(Version, "the geth console")
 )
 
 func init() {
@@ -93,8 +93,11 @@ func main() {
 func run(ctx *cli.Context) {
 	jspath := ctx.GlobalString(utils.JSpathFlag.Name)
 	ipcpath := utils.IpcSocketPath(ctx)
-
 	repl := newJSRE(jspath, ipcpath)
-	repl.welcome(ipcpath)
-	repl.interactive()
+
+	if ctx.Args().Present() {
+		repl.batch(ctx.Args())
+	} else {
+		repl.interactive(ipcpath)
+	}
 }