diff --git a/cmd/abigen/main.go b/cmd/abigen/main.go index 252d8ef800..fd7b67fce8 100644 --- a/cmd/abigen/main.go +++ b/cmd/abigen/main.go @@ -24,6 +24,7 @@ import ( "regexp" "strings" + "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/common/compiler" @@ -193,10 +194,21 @@ func abigen(c *cli.Context) error { utils.Fatalf("Failed to build Solidity contract: %v", err) } case c.GlobalIsSet(vyFlag.Name): - contracts, err = compiler.CompileVyper(c.GlobalString(vyperFlag.Name), c.GlobalString(vyFlag.Name)) + output, err := compiler.CompileVyper(c.GlobalString(vyperFlag.Name), c.GlobalString(vyFlag.Name)) if err != nil { utils.Fatalf("Failed to build Vyper contract: %v", err) } + contracts = make(map[string]*compiler.Contract) + for n, contract := range output { + name := n + // Sanitize the combined json names to match the + // format expected by solidity. + if !strings.Contains(n, ":") { + name = abi.ToCamelCase(strings.TrimSuffix(name, ".vy")) + } + contracts[name] = contract + } + case c.GlobalIsSet(jsonFlag.Name): jsonOutput, err := ioutil.ReadFile(c.GlobalString(jsonFlag.Name)) if err != nil {