github.com/bitrise-io/go-xamarin@v0.0.0-20211005113058-bf60a8bae851/tools/tools.go (about)

     1  package tools
     2  
     3  import "io"
     4  
     5  // Runnable ...
     6  type Runnable interface {
     7  	String() string
     8  	SetCustomOptions(options ...string)
     9  	Run(outWriter, errWriter io.Writer) error
    10  }
    11  
    12  // Printable ...
    13  type Printable interface {
    14  	String() string
    15  }
    16  
    17  // Editable ...
    18  type Editable interface {
    19  	SetCustomOptions(options ...string)
    20  }
    21  
    22  //
    23  // EmptyCommand - for return type in case of failed to create a RunnableCommand
    24  type EmptyCommand struct{}
    25  
    26  // String ...
    27  func (cmd *EmptyCommand) String() string { return "" }
    28  
    29  // SetCustomOptions ...
    30  func (cmd *EmptyCommand) SetCustomOptions(options ...string) {}
    31  
    32  // Run ...
    33  func (cmd *EmptyCommand) Run() error { return nil }
    34  
    35  // ---
    36  
    37  // PrintableSliceContains ...
    38  func PrintableSliceContains(cmdSlice []Printable, cmd Printable) bool {
    39  	for _, c := range cmdSlice {
    40  		if c.String() == cmd.String() {
    41  			return true
    42  		}
    43  	}
    44  	return false
    45  }