github.com/arunkumar7540/cli@v6.45.0+incompatible/integration/helpers/name_generator.go (about)

     1  package helpers
     2  
     3  import (
     4  	"fmt"
     5  	"sort"
     6  	"strings"
     7  
     8  	uuid "github.com/nu7hatch/gouuid"
     9  )
    10  
    11  // TODO: Is this working???
    12  
    13  // GenerateHigherName will use the passed randomNameGenerator to generate a name with a higher
    14  // sort value than all the passed names
    15  func GenerateHigherName(randomNameGenerator func() string, names ...string) string {
    16  	if len(names) == 0 {
    17  		return randomNameGenerator()
    18  	}
    19  	sort.Strings(names)
    20  
    21  	maxName := names[len(names)-1]
    22  
    23  	for {
    24  		name := randomNameGenerator()
    25  		// regenerate name if name is NOT higher
    26  		if strings.Compare(name, maxName) > 0 {
    27  			return name
    28  		}
    29  	}
    30  }
    31  
    32  // TODO: Is this working???
    33  
    34  // GenerateLowerName will use the passed randomNameGenerator to generate a name with a lower
    35  // sort value than all the passed names
    36  func GenerateLowerName(randomNameGenerator func() string, names ...string) string {
    37  	if len(names) == 0 {
    38  		return randomNameGenerator()
    39  	}
    40  
    41  	sort.Strings(names)
    42  
    43  	minName := names[0]
    44  
    45  	for {
    46  		name := randomNameGenerator()
    47  		// regenerate name if name is NOT higher
    48  		if strings.Compare(name, minName) < 0 {
    49  			return name
    50  		}
    51  	}
    52  }
    53  
    54  // NewAppName provides a random name prefixed with INTEGRATION-APP
    55  func NewAppName() string {
    56  	return PrefixedRandomName("INTEGRATION-APP")
    57  }
    58  
    59  // NewIsolationSegmentName provides a random name prefixed with INTEGRATION-ISOLATION-SEGMENT
    60  func NewIsolationSegmentName(infix ...string) string {
    61  	return PrefixedRandomName("INTEGRATION-ISOLATION-SEGMENT")
    62  }
    63  
    64  // NewOrgName provides a random name prefixed with INTEGRATION-ORG
    65  func NewOrgName() string {
    66  	return PrefixedRandomName("INTEGRATION-ORG")
    67  }
    68  
    69  // NewServiceBrokerName provides a random name prefixed with INTEGRATION-SERVICE-BROKER
    70  func NewServiceBrokerName() string {
    71  	return PrefixedRandomName("INTEGRATION-SERVICE-BROKER")
    72  }
    73  
    74  // NewPlanName provides a random name prefixed with INTEGRATION-PLAN
    75  func NewPlanName() string {
    76  	return PrefixedRandomName("INTEGRATION-PLAN")
    77  }
    78  
    79  // NewPassword provides a random string prefixed with INTEGRATION-PASSWORD
    80  func NewPassword() string {
    81  	return PrefixedRandomName("INTEGRATION-PASSWORD")
    82  }
    83  
    84  // NewSecurityGroupName provides a random name prefixed with INTEGRATION-SEC-GROUP. If an infix is provided, it
    85  // is placed between INTEGRATION-SEC-GROUP and the random string.
    86  func NewSecurityGroupName(infix ...string) string {
    87  	if len(infix) > 0 {
    88  		return PrefixedRandomName("INTEGRATION-SEC-GROUP-" + infix[0])
    89  	}
    90  
    91  	return PrefixedRandomName("INTEGRATION-SEC-GROUP")
    92  }
    93  
    94  // NewSpaceName provides a random name prefixed with INTEGRATION-SPACE
    95  func NewSpaceName() string {
    96  	return PrefixedRandomName("INTEGRATION-SPACE")
    97  }
    98  
    99  // NewUsername provides a random name prefixed with INTEGRATION-USER
   100  func NewUsername() string {
   101  	return PrefixedRandomName("INTEGRATION-USER")
   102  }
   103  
   104  // NewBuildpackName provides a random name prefixed with INTEGRATION-BUILDPACK
   105  func NewBuildpackName() string {
   106  	return PrefixedRandomName("INTEGRATION-BUILDPACK")
   107  }
   108  
   109  // NewStackName provides a random name prefixed with INTEGRATION-STACK
   110  func NewStackName() string {
   111  	return PrefixedRandomName("INTEGRATION-STACK")
   112  }
   113  
   114  // NewDomainName provides a random domain name prefixed with integration. If prefix is provided the domain name
   115  // will have structure "integration-prefix-randomstring.com" else it will have structure "integration-randomstring.com"
   116  func NewDomainName(prefix ...string) string {
   117  	if len(prefix) > 0 {
   118  		return fmt.Sprintf("integration-%s.com", PrefixedRandomName(prefix[0]))
   119  	}
   120  	return fmt.Sprintf("integration%s.com", PrefixedRandomName(""))
   121  }
   122  
   123  // PrefixedRandomName provides a random name with structure "namePrefix-randomstring"
   124  func PrefixedRandomName(namePrefix string) string {
   125  	return namePrefix + "-" + RandomName()
   126  }
   127  
   128  // RandomName provides a random string
   129  func RandomName() string {
   130  	guid, err := uuid.NewV4()
   131  	if err != nil {
   132  		panic(err)
   133  	}
   134  
   135  	return guid.String()
   136  }