Added editor for contracts

This commit is contained in:
obscuren 2014-02-18 12:09:36 +01:00
parent ab7dc92404
commit 6736c03711

@ -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":