diff options
author | obscuren <geffobscura@gmail.com> | 2014-10-18 19:23:01 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-10-18 19:23:01 +0800 |
commit | a02dc4ccc321bdee2a670eecdf5c3bac01fc290b (patch) | |
tree | 9fff182ebd43564c78e62a70b306b2c1afb02823 /ethutil/script_unix.go | |
parent | d2bb83833ffadc91d128a1833853ec3240b8c824 (diff) | |
download | go-tangerine-a02dc4ccc321bdee2a670eecdf5c3bac01fc290b.tar.gz go-tangerine-a02dc4ccc321bdee2a670eecdf5c3bac01fc290b.tar.zst go-tangerine-a02dc4ccc321bdee2a670eecdf5c3bac01fc290b.zip |
Using proper naming scheme. Fixes #63
Diffstat (limited to 'ethutil/script_unix.go')
-rw-r--r-- | ethutil/script_unix.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/ethutil/script_unix.go b/ethutil/script_unix.go new file mode 100644 index 000000000..bd087e7e0 --- /dev/null +++ b/ethutil/script_unix.go @@ -0,0 +1,47 @@ +package ethutil + +import ( + "fmt" + "strings" + + "github.com/obscuren/mutan" + "github.com/obscuren/mutan/backends" + "github.com/obscuren/serpent-go" +) + +// General compile function +func Compile(script string, silent bool) (ret []byte, err error) { + if len(script) > 2 { + line := strings.Split(script, "\n")[0] + + if len(line) > 1 && line[0:2] == "#!" { + switch line { + case "#!serpent": + byteCode, err := serpent.Compile(script) + if err != nil { + return nil, err + } + + return byteCode, nil + } + } else { + + compiler := mutan.NewCompiler(backend.NewEthereumBackend()) + compiler.Silent = silent + byteCode, errors := compiler.Compile(strings.NewReader(script)) + if len(errors) > 0 { + var errs string + for _, er := range errors { + if er != nil { + errs += er.Error() + } + } + return nil, fmt.Errorf("%v", errs) + } + + return byteCode, nil + } + } + + return nil, nil +} |