github.com/sleungcy-sap/cli@v7.1.0+incompatible/integration/helpers/buildpack_v7.go (about)

     1  package helpers
     2  
     3  import (
     4  	"fmt"
     5  	"regexp"
     6  )
     7  
     8  // BuildpacksOutputRegex takes a BuildpackFields struct and returns a regex
     9  // matching a line in the output of 'cf buildpacks' representing the given
    10  // buildpack.
    11  func BuildpacksOutputRegex(fields BuildpackFields) string {
    12  	anyStringRegex := `\S+`
    13  	optionalStringRegex := `\S*`
    14  	anyBoolRegex := `(true|false)`
    15  	anyIntRegex := `\d+`
    16  
    17  	nameRegex := anyStringRegex
    18  	if fields.Name != "" {
    19  		nameRegex = regexp.QuoteMeta(fields.Name)
    20  	}
    21  
    22  	positionRegex := anyIntRegex
    23  	if fields.Position != "" {
    24  		positionRegex = regexp.QuoteMeta(fields.Position)
    25  	}
    26  
    27  	enabledRegex := anyBoolRegex
    28  	if fields.Enabled != "" {
    29  		enabledRegex = regexp.QuoteMeta(fields.Enabled)
    30  	}
    31  
    32  	lockedRegex := anyBoolRegex
    33  	if fields.Locked != "" {
    34  		lockedRegex = regexp.QuoteMeta(fields.Locked)
    35  	}
    36  
    37  	filenameRegex := anyStringRegex
    38  	if fields.Filename != "" {
    39  		filenameRegex = regexp.QuoteMeta(fields.Filename)
    40  	}
    41  
    42  	stackRegex := optionalStringRegex
    43  	if fields.Stack != "" {
    44  		stackRegex = regexp.QuoteMeta(fields.Stack)
    45  	}
    46  
    47  	return fmt.Sprintf(`%s\s+%s\s+%s\s+%s\s+%s\s+%s`,
    48  		positionRegex,
    49  		nameRegex,
    50  		stackRegex,
    51  		enabledRegex,
    52  		lockedRegex,
    53  		filenameRegex,
    54  	)
    55  }