diff options
author | obscuren <geffobscura@gmail.com> | 2014-02-18 19:09:36 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-02-18 19:09:36 +0800 |
commit | 6736c03711b3ef35285392c12a79bbf6e4cdf914 (patch) | |
tree | 23a75a4ece567ed4f692fe172194d881c594f2aa | |
parent | ab7dc924042b4cdb36ec7f2b26ab14c40d34ec9d (diff) | |
download | dexon-6736c03711b3ef35285392c12a79bbf6e4cdf914.tar dexon-6736c03711b3ef35285392c12a79bbf6e4cdf914.tar.gz dexon-6736c03711b3ef35285392c12a79bbf6e4cdf914.tar.bz2 dexon-6736c03711b3ef35285392c12a79bbf6e4cdf914.tar.lz dexon-6736c03711b3ef35285392c12a79bbf6e4cdf914.tar.xz dexon-6736c03711b3ef35285392c12a79bbf6e4cdf914.tar.zst dexon-6736c03711b3ef35285392c12a79bbf6e4cdf914.zip |
Added editor for contracts
-rw-r--r-- | dev_console.go | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/dev_console.go b/dev_console.go index 6670d2a44..2e6b385df 100644 --- a/dev_console.go +++ b/dev_console.go @@ -2,6 +2,7 @@ package main import ( "bufio" + "bytes" "encoding/hex" "errors" "fmt" @@ -78,6 +79,32 @@ func (i *Console) ValidateInput(action string, argumentLength int) error { } } +func (i *Console) Editor() []string { + var buff bytes.Buffer + for { + reader := bufio.NewReader(os.Stdin) + str, _, err := reader.ReadLine() + if len(str) > 0 { + buff.Write(str) + buff.WriteString("\n") + } + + if err != nil && err.Error() == "EOF" { + break + } + } + + scanner := bufio.NewScanner(strings.NewReader(buff.String())) + scanner.Split(bufio.ScanLines) + + var lines []string + for scanner.Scan() { + lines = append(lines, scanner.Text()) + } + + return lines +} + func (i *Console) PrintRoot() { root := ethutil.NewValue(i.trie.Root) if len(root.Bytes()) != 0 { @@ -169,10 +196,17 @@ func (i *Console) ParseInput(input string) bool { fmt.Println("gettx: tx not found") } case "contract": - contract := ethchain.NewTransaction([]byte{}, ethutil.Big(tokens[1]), []string{"PUSH", "1234"}) - fmt.Printf("%x\n", contract.Hash()) + fmt.Println("Contract editor (Ctrl-D = done)") + code := i.Editor() + + contract := ethchain.NewTransaction([]byte{}, ethutil.Big(tokens[1]), code) + data, _ := ethutil.Config.Db.Get([]byte("KeyRing")) + keyRing := ethutil.NewValueFromBytes(data) + contract.Sign(keyRing.Get(0).Bytes()) i.ethereum.TxPool.QueueTransaction(contract) + + fmt.Printf("%x\n", contract.Hash()) case "exit", "quit", "q": return false case "help": |