|
|
@@ -17,7 +17,6 @@
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
- "bytes"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"io/ioutil"
|
|
|
@@ -121,28 +120,36 @@ func runCmd(ctx *cli.Context) error {
|
|
|
ret []byte
|
|
|
err error
|
|
|
)
|
|
|
+ codeFileFlag := ctx.GlobalString(CodeFileFlag.Name)
|
|
|
+ codeFlag := ctx.GlobalString(CodeFlag.Name)
|
|
|
+
|
|
|
// The '--code' or '--codefile' flag overrides code in state
|
|
|
- if ctx.GlobalString(CodeFileFlag.Name) != "" {
|
|
|
+ if codeFileFlag != "" || codeFlag != "" {
|
|
|
var hexcode []byte
|
|
|
- var err error
|
|
|
- // If - is specified, it means that code comes from stdin
|
|
|
- if ctx.GlobalString(CodeFileFlag.Name) == "-" {
|
|
|
- //Try reading from stdin
|
|
|
- if hexcode, err = ioutil.ReadAll(os.Stdin); err != nil {
|
|
|
- fmt.Printf("Could not load code from stdin: %v\n", err)
|
|
|
- os.Exit(1)
|
|
|
+ if codeFileFlag != "" {
|
|
|
+ var err error
|
|
|
+ // If - is specified, it means that code comes from stdin
|
|
|
+ if codeFileFlag == "-" {
|
|
|
+ //Try reading from stdin
|
|
|
+ if hexcode, err = ioutil.ReadAll(os.Stdin); err != nil {
|
|
|
+ fmt.Printf("Could not load code from stdin: %v\n", err)
|
|
|
+ os.Exit(1)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // Codefile with hex assembly
|
|
|
+ if hexcode, err = ioutil.ReadFile(codeFileFlag); err != nil {
|
|
|
+ fmt.Printf("Could not load code from file: %v\n", err)
|
|
|
+ os.Exit(1)
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
- // Codefile with hex assembly
|
|
|
- if hexcode, err = ioutil.ReadFile(ctx.GlobalString(CodeFileFlag.Name)); err != nil {
|
|
|
- fmt.Printf("Could not load code from file: %v\n", err)
|
|
|
- os.Exit(1)
|
|
|
- }
|
|
|
+ hexcode = []byte(codeFlag)
|
|
|
}
|
|
|
- code = common.Hex2Bytes(string(bytes.TrimRight(hexcode, "\n")))
|
|
|
-
|
|
|
- } else if ctx.GlobalString(CodeFlag.Name) != "" {
|
|
|
- code = common.Hex2Bytes(ctx.GlobalString(CodeFlag.Name))
|
|
|
+ if len(hexcode)%2 != 0 {
|
|
|
+ fmt.Printf("Invalid input length for hex data (%d)\n", len(hexcode))
|
|
|
+ os.Exit(1)
|
|
|
+ }
|
|
|
+ code = common.FromHex(string(hexcode))
|
|
|
} else if fn := ctx.Args().First(); len(fn) > 0 {
|
|
|
// EASM-file to compile
|
|
|
src, err := ioutil.ReadFile(fn)
|
|
|
@@ -155,7 +162,6 @@ func runCmd(ctx *cli.Context) error {
|
|
|
}
|
|
|
code = common.Hex2Bytes(bin)
|
|
|
}
|
|
|
-
|
|
|
initialGas := ctx.GlobalUint64(GasFlag.Name)
|
|
|
if genesisConfig.GasLimit != 0 {
|
|
|
initialGas = genesisConfig.GasLimit
|