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  }