From 0287e1a7c00c1eaad1a99b4ea05d70f1ed685140 Mon Sep 17 00:00:00 2001
From: Martin Holst Swende <martin@swende.se>
Date: Thu, 26 May 2022 09:26:37 +0200
Subject: [PATCH] cmd/abigen: accept combined-json via stdin (#24960)

---
 cmd/abigen/main.go | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/cmd/abigen/main.go b/cmd/abigen/main.go
index 8f255143c52f..7a321e18b6b5 100644
--- a/cmd/abigen/main.go
+++ b/cmd/abigen/main.go
@@ -55,7 +55,7 @@ var (
 	}
 	jsonFlag = cli.StringFlag{
 		Name:  "combined-json",
-		Usage: "Path to the combined-json file generated by compiler",
+		Usage: "Path to the combined-json file generated by compiler, - for STDIN",
 	}
 	excFlag = cli.StringFlag{
 		Name:  "exc",
@@ -165,9 +165,18 @@ func abigen(c *cli.Context) error {
 		var contracts map[string]*compiler.Contract
 
 		if c.GlobalIsSet(jsonFlag.Name) {
-			jsonOutput, err := os.ReadFile(c.GlobalString(jsonFlag.Name))
+			var (
+				input      = c.GlobalString(jsonFlag.Name)
+				jsonOutput []byte
+				err        error
+			)
+			if input == "-" {
+				jsonOutput, err = io.ReadAll(os.Stdin)
+			} else {
+				jsonOutput, err = os.ReadFile(input)
+			}
 			if err != nil {
-				utils.Fatalf("Failed to read combined-json from compiler: %v", err)
+				utils.Fatalf("Failed to read combined-json: %v", err)
 			}
 			contracts, err = compiler.ParseCombinedJSON(jsonOutput, "", "", "", "")
 			if err != nil {