// Copyright 2017 The go-ethereum Authors // This file is part of go-ethereum. // // go-ethereum is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // go-ethereum is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with go-ethereum. If not, see . package main import ( "errors" "fmt" "io/ioutil" "github.com/ethereum/go-ethereum/cmd/evm/internal/compiler" cli "gopkg.in/urfave/cli.v1" ) var compileCommand = cli.Command{ Action: compileCmd, Name: "compile", Usage: "compiles easm source to evm binary", ArgsUsage: "", } func compileCmd(ctx *cli.Context) error { debug := ctx.GlobalBool(DebugFlag.Name) if len(ctx.Args().First()) == 0 { return errors.New("filename required") } fn := ctx.Args().First() src, err := ioutil.ReadFile(fn) if err != nil { return err } bin, err := compiler.Compile(fn, src, debug) if err != nil { return err } fmt.Println(bin) return nil }