github.com/eliastor/durgaform@v0.0.0-20220816172711-d0ab2d17673e/internal/durgaform/ui_input.go (about)

     1  package durgaform
     2  
     3  import "context"
     4  
     5  // UIInput is the interface that must be implemented to ask for input
     6  // from this user. This should forward the request to wherever the user
     7  // inputs things to ask for values.
     8  type UIInput interface {
     9  	Input(context.Context, *InputOpts) (string, error)
    10  }
    11  
    12  // InputOpts are options for asking for input.
    13  type InputOpts struct {
    14  	// Id is a unique ID for the question being asked that might be
    15  	// used for logging or to look up a prior answered question.
    16  	Id string
    17  
    18  	// Query is a human-friendly question for inputting this value.
    19  	Query string
    20  
    21  	// Description is a description about what this option is. Be wary
    22  	// that this will probably be in a terminal so split lines as you see
    23  	// necessary.
    24  	Description string
    25  
    26  	// Default will be the value returned if no data is entered.
    27  	Default string
    28  
    29  	// Secret should be true if we are asking for sensitive input.
    30  	// If attached to a TTY, Durgaform will disable echo.
    31  	Secret bool
    32  }