github.com/arieschain/arieschain@v0.0.0-20191023063405-37c074544356/cmd/evm/compiler.go (about)

     1  
     2  package main
     3  
     4  import (
     5  	"errors"
     6  	"fmt"
     7  	"io/ioutil"
     8  
     9  	"github.com/quickchainproject/quickchain/cmd/evm/internal/compiler"
    10  
    11  	cli "gopkg.in/urfave/cli.v1"
    12  )
    13  
    14  var compileCommand = cli.Command{
    15  	Action:    compileCmd,
    16  	Name:      "compile",
    17  	Usage:     "compiles easm source to evm binary",
    18  	ArgsUsage: "<file>",
    19  }
    20  
    21  func compileCmd(ctx *cli.Context) error {
    22  	debug := ctx.GlobalBool(DebugFlag.Name)
    23  
    24  	if len(ctx.Args().First()) == 0 {
    25  		return errors.New("filename required")
    26  	}
    27  
    28  	fn := ctx.Args().First()
    29  	src, err := ioutil.ReadFile(fn)
    30  	if err != nil {
    31  		return err
    32  	}
    33  
    34  	bin, err := compiler.Compile(fn, src, debug)
    35  	if err != nil {
    36  		return err
    37  	}
    38  	fmt.Println(bin)
    39  	return nil
    40  }