1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // Copyright 2019 The go-ethereum Authors
- // This file is part of the go-ethereum library.
- //
- // The go-ethereum library is free software: you can redistribute it and/or modify
- // it under the terms of the GNU Lesser General Public License as published by
- // the Free Software Foundation, either version 3 of the License, or
- // (at your option) any later version.
- //
- // The go-ethereum library 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 Lesser General Public License for more details.
- //
- // You should have received a copy of the GNU Lesser General Public License
- // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
- // Package compiler wraps the Solidity and Vyper compiler executables (solc; vyper).
- package compiler
- import (
- "bytes"
- "io/ioutil"
- "regexp"
- )
- var versionRegexp = regexp.MustCompile(`([0-9]+)\.([0-9]+)\.([0-9]+)`)
- // Contract contains information about a compiled contract, alongside its code and runtime code.
- type Contract struct {
- Code string `json:"code"`
- RuntimeCode string `json:"runtime-code"`
- Info ContractInfo `json:"info"`
- Hashes map[string]string `json:"hashes"`
- }
- // ContractInfo contains information about a compiled contract, including access
- // to the ABI definition, source mapping, user and developer docs, and metadata.
- //
- // Depending on the source, language version, compiler version, and compiler
- // options will provide information about how the contract was compiled.
- type ContractInfo struct {
- Source string `json:"source"`
- Language string `json:"language"`
- LanguageVersion string `json:"languageVersion"`
- CompilerVersion string `json:"compilerVersion"`
- CompilerOptions string `json:"compilerOptions"`
- SrcMap interface{} `json:"srcMap"`
- SrcMapRuntime string `json:"srcMapRuntime"`
- AbiDefinition interface{} `json:"abiDefinition"`
- UserDoc interface{} `json:"userDoc"`
- DeveloperDoc interface{} `json:"developerDoc"`
- Metadata string `json:"metadata"`
- }
- func slurpFiles(files []string) (string, error) {
- var concat bytes.Buffer
- for _, file := range files {
- content, err := ioutil.ReadFile(file)
- if err != nil {
- return "", err
- }
- concat.Write(content)
- }
- return concat.String(), nil
- }
|