Added editor for contracts
This commit is contained in:
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":
|
||||
|
|
Loading…
Reference in New Issue