aboutsummaryrefslogtreecommitdiffstats
path: root/ethereum
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-05-19 23:01:40 +0800
committerobscuren <geffobscura@gmail.com>2014-05-19 23:01:40 +0800
commit92eaa98e8381bef5224ffe864aa1cd4288af4d12 (patch)
treef8b488887a750d7ca6cd23278ae9cc2e737b7ddd /ethereum
parent017bbbb582b09a3264b4ff996f35275d381f284f (diff)
downloaddexon-92eaa98e8381bef5224ffe864aa1cd4288af4d12.tar.gz
dexon-92eaa98e8381bef5224ffe864aa1cd4288af4d12.tar.zst
dexon-92eaa98e8381bef5224ffe864aa1cd4288af4d12.zip
Added js interpret mode
Diffstat (limited to 'ethereum')
-rw-r--r--ethereum/config.go2
-rw-r--r--ethereum/ethereum.go19
-rw-r--r--ethereum/js_lib.go11
3 files changed, 29 insertions, 3 deletions
diff --git a/ethereum/config.go b/ethereum/config.go
index 5ddc8e635..090c022b0 100644
--- a/ethereum/config.go
+++ b/ethereum/config.go
@@ -21,6 +21,7 @@ var LogFile string
var DataDir string
var NonInteractive bool
var StartJsConsole bool
+var InputFile string
func Init() {
flag.BoolVar(&StartConsole, "c", false, "debug and testing console")
@@ -40,6 +41,7 @@ func Init() {
flag.StringVar(&ImportKey, "import", "", "imports the given private key (hex)")
flag.IntVar(&MaxPeer, "x", 5, "maximum desired peers")
flag.BoolVar(&StartJsConsole, "js", false, "exp")
+ flag.StringVar(&InputFile, "e", "", "Run javascript file")
flag.Parse()
}
diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go
index 1cbb61002..f680b5416 100644
--- a/ethereum/ethereum.go
+++ b/ethereum/ethereum.go
@@ -6,6 +6,7 @@ import (
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
+ "io/ioutil"
"log"
"os"
"os/signal"
@@ -51,7 +52,7 @@ func main() {
var logSys *log.Logger
flags := log.LstdFlags
- if StartJsConsole {
+ if StartJsConsole || len(InputFile) > 0 {
ethutil.ReadConfig(DataDir, ethutil.LogFile)
} else {
ethutil.ReadConfig(DataDir, ethutil.LogFile|ethutil.LogStd)
@@ -157,6 +158,22 @@ save these words so you can restore your account later: %s
RegisterInterrupt(func(os.Signal) {
repl.Stop()
})
+ } else if len(InputFile) > 0 {
+ file, err := os.Open(InputFile)
+ if err != nil {
+ ethutil.Config.Log.Fatal(err)
+ }
+
+ content, err := ioutil.ReadAll(file)
+ if err != nil {
+ ethutil.Config.Log.Fatal(err)
+ }
+
+ re := NewJSRE(ethereum)
+ RegisterInterrupt(func(os.Signal) {
+ re.Stop()
+ })
+ re.Run(string(content))
}
if StartRpc {
diff --git a/ethereum/js_lib.go b/ethereum/js_lib.go
index 8b59d75ca..189dcc3a0 100644
--- a/ethereum/js_lib.go
+++ b/ethereum/js_lib.go
@@ -31,6 +31,8 @@ function pp(object) {
str += "\033[1m\033[30m" + object;
} else if(typeof(object) === "number") {
str += "\033[31m" + object;
+ } else if(typeof(object) === "function") {
+ str += "\033[35m[Function]";
} else {
str += object;
}
@@ -40,7 +42,12 @@ function pp(object) {
return str;
}
-function prettyPrint(object) {
- console.log(pp(object))
+function prettyPrint(/* */) {
+ var args = arguments;
+ for(var i = 0, l = args.length; i < l; i++) {
+ console.log(pp(args[i]))
+ }
}
+
+var print = prettyPrint;
`