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