github.com/eris-ltd/erisdb@v0.25.0/deploy/util/readers.go (about) 1 package util 2 3 import ( 4 "bufio" 5 "fmt" 6 "os" 7 "strconv" 8 "strings" 9 10 "github.com/hyperledger/burrow/execution/exec" 11 "github.com/hyperledger/burrow/logging" 12 hex "github.com/tmthrgd/go-hex" 13 ) 14 15 // This is a closer function which is called by most of the tx_run functions 16 func ReadTxSignAndBroadcast(txe *exec.TxExecution, err error, logger *logging.Logger) error { 17 // if there's an error just return. 18 if err != nil { 19 return err 20 } 21 22 // if there is nothing to unpack then just return. 23 if txe == nil { 24 return nil 25 } 26 27 // Unpack and display for the user. 28 height := fmt.Sprintf("%d", txe.Height) 29 30 if txe.Receipt.CreatesContract { 31 logger.InfoMsg("Tx Return", 32 "addr", txe.Receipt.ContractAddress.String(), 33 "Transaction Hash", hex.EncodeToString(txe.TxHash)) 34 } else { 35 logger.InfoMsg("Tx Return", 36 "Transaction Hash", hex.EncodeToString(txe.TxHash), 37 "Block Height", height) 38 39 ret := txe.GetResult().GetReturn() 40 if len(ret) != 0 { 41 logger.InfoMsg("Return", 42 "Return Value", hex.EncodeUpperToString(ret), 43 "Exception", txe.Exception) 44 } 45 } 46 47 return nil 48 } 49 50 func GetStringResponse(question string, defaultAnswer string, reader *os.File, logger *logging.Logger) (string, error) { 51 readr := bufio.NewReader(reader) 52 logger.InfoMsg(question) 53 54 text, _ := readr.ReadString('\n') 55 text = strings.Replace(text, "\n", "", 1) 56 if text == "" { 57 return defaultAnswer, nil 58 } 59 return text, nil 60 } 61 62 func GetIntResponse(question string, defaultAnswer int64, reader *os.File, logger *logging.Logger) (int64, error) { 63 readr := bufio.NewReader(reader) 64 65 text, _ := readr.ReadString('\n') 66 text = strings.Replace(text, "\n", "", 1) 67 if text == "" { 68 return defaultAnswer, nil 69 } 70 71 result, err := strconv.ParseInt(text, 10, 64) 72 if err != nil { 73 return 0, nil 74 } 75 76 return result, nil 77 } 78 79 // displays the question, scans for the response, if the response is an empty 80 // string will return default, otherwise will parseBool and return the result. 81 func GetBoolResponse(question string, defaultAnswer bool, reader *os.File, logger *logging.Logger) (bool, error) { 82 var result bool 83 readr := bufio.NewReader(reader) 84 logger.InfoMsg(question) 85 86 text, _ := readr.ReadString('\n') 87 text = strings.Replace(text, "\n", "", 1) 88 if text == "" { 89 return defaultAnswer, nil 90 } 91 92 if text == "Yes" || text == "YES" || text == "Y" || text == "y" { 93 result = true 94 } else { 95 result = false 96 } 97 98 return result, nil 99 }