github.com/ablease/cli@v6.37.1-0.20180613014814-3adbb7d7fb19+incompatible/cf/requirements/factory.go (about)

     1  package requirements
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/cf"
     5  	"code.cloudfoundry.org/cli/cf/api"
     6  	"code.cloudfoundry.org/cli/cf/configuration/coreconfig"
     7  	. "code.cloudfoundry.org/cli/cf/i18n"
     8  	"github.com/blang/semver"
     9  )
    10  
    11  //go:generate counterfeiter . Factory
    12  
    13  type Factory interface {
    14  	NewApplicationRequirement(name string) ApplicationRequirement
    15  	NewDEAApplicationRequirement(name string) DEAApplicationRequirement
    16  	NewDiegoApplicationRequirement(name string) DiegoApplicationRequirement
    17  	NewServiceInstanceRequirement(name string) ServiceInstanceRequirement
    18  	NewLoginRequirement() Requirement
    19  	NewRoutingAPIRequirement() Requirement
    20  	NewSpaceRequirement(name string) SpaceRequirement
    21  	NewTargetedSpaceRequirement() Requirement
    22  	NewTargetedOrgRequirement() TargetedOrgRequirement
    23  	NewOrganizationRequirement(name string) OrganizationRequirement
    24  	NewDomainRequirement(name string) DomainRequirement
    25  	NewUserRequirement(username string, wantGUID bool) UserRequirement
    26  	NewBuildpackRequirement(buildpack, stack string) BuildpackRequirement
    27  	NewAPIEndpointRequirement() Requirement
    28  	NewMinAPIVersionRequirement(commandName string, requiredVersion semver.Version) Requirement
    29  	NewMaxAPIVersionRequirement(commandName string, maximumVersion semver.Version) Requirement
    30  	NewUsageRequirement(Usable, string, func() bool) Requirement
    31  	NewNumberArguments([]string, ...string) Requirement
    32  }
    33  
    34  type apiRequirementFactory struct {
    35  	config      coreconfig.ReadWriter
    36  	repoLocator api.RepositoryLocator
    37  }
    38  
    39  func NewFactory(config coreconfig.ReadWriter, repoLocator api.RepositoryLocator) (factory apiRequirementFactory) {
    40  	return apiRequirementFactory{config, repoLocator}
    41  }
    42  
    43  func (f apiRequirementFactory) NewApplicationRequirement(name string) ApplicationRequirement {
    44  	return NewApplicationRequirement(
    45  		name,
    46  		f.repoLocator.GetApplicationRepository(),
    47  	)
    48  }
    49  
    50  func (f apiRequirementFactory) NewDEAApplicationRequirement(name string) DEAApplicationRequirement {
    51  	return NewDEAApplicationRequirement(
    52  		name,
    53  		f.repoLocator.GetApplicationRepository(),
    54  	)
    55  }
    56  
    57  func (f apiRequirementFactory) NewDiegoApplicationRequirement(name string) DiegoApplicationRequirement {
    58  	return NewDiegoApplicationRequirement(
    59  		name,
    60  		f.repoLocator.GetApplicationRepository(),
    61  	)
    62  }
    63  
    64  func (f apiRequirementFactory) NewServiceInstanceRequirement(name string) ServiceInstanceRequirement {
    65  	return NewServiceInstanceRequirement(
    66  		name,
    67  		f.repoLocator.GetServiceRepository(),
    68  	)
    69  }
    70  
    71  func (f apiRequirementFactory) NewLoginRequirement() Requirement {
    72  	return NewLoginRequirement(
    73  		f.config,
    74  	)
    75  }
    76  
    77  func (f apiRequirementFactory) NewRoutingAPIRequirement() Requirement {
    78  	req := Requirements{
    79  		f.NewMinAPIVersionRequirement(T("This command"), cf.TCPRoutingMinimumAPIVersion),
    80  		NewRoutingAPIRequirement(
    81  			f.config,
    82  		),
    83  	}
    84  
    85  	return req
    86  }
    87  
    88  func (f apiRequirementFactory) NewSpaceRequirement(name string) SpaceRequirement {
    89  	return NewSpaceRequirement(
    90  		name,
    91  		f.repoLocator.GetSpaceRepository(),
    92  	)
    93  }
    94  
    95  func (f apiRequirementFactory) NewTargetedSpaceRequirement() Requirement {
    96  	return NewTargetedSpaceRequirement(
    97  		f.config,
    98  	)
    99  }
   100  
   101  func (f apiRequirementFactory) NewTargetedOrgRequirement() TargetedOrgRequirement {
   102  	return NewTargetedOrgRequirement(
   103  		f.config,
   104  	)
   105  }
   106  
   107  func (f apiRequirementFactory) NewOrganizationRequirement(name string) OrganizationRequirement {
   108  	return NewOrganizationRequirement(
   109  		name,
   110  		f.repoLocator.GetOrganizationRepository(),
   111  	)
   112  }
   113  
   114  func (f apiRequirementFactory) NewDomainRequirement(name string) DomainRequirement {
   115  	return NewDomainRequirement(
   116  		name,
   117  		f.config,
   118  		f.repoLocator.GetDomainRepository(),
   119  	)
   120  }
   121  
   122  func (f apiRequirementFactory) NewUserRequirement(username string, wantGUID bool) UserRequirement {
   123  	return NewUserRequirement(
   124  		username,
   125  		f.repoLocator.GetUserRepository(),
   126  		wantGUID,
   127  	)
   128  }
   129  
   130  func (f apiRequirementFactory) NewBuildpackRequirement(buildpack, stack string) BuildpackRequirement {
   131  	return NewBuildpackRequirement(
   132  		buildpack,
   133  		stack,
   134  		f.repoLocator.GetBuildpackRepository(),
   135  	)
   136  }
   137  
   138  func (f apiRequirementFactory) NewAPIEndpointRequirement() Requirement {
   139  	return NewAPIEndpointRequirement(
   140  		f.config,
   141  	)
   142  }
   143  
   144  func (f apiRequirementFactory) NewMinAPIVersionRequirement(commandName string, requiredVersion semver.Version) Requirement {
   145  	r := NewMinAPIVersionRequirement(
   146  		f.config,
   147  		commandName,
   148  		requiredVersion,
   149  	)
   150  
   151  	refresher := coreconfig.APIConfigRefresher{
   152  		Endpoint:     f.config.APIEndpoint(),
   153  		EndpointRepo: f.repoLocator.GetEndpointRepository(),
   154  		Config:       f.config,
   155  	}
   156  
   157  	return NewConfigRefreshingRequirement(r, refresher)
   158  }
   159  
   160  func (f apiRequirementFactory) NewMaxAPIVersionRequirement(commandName string, maximumVersion semver.Version) Requirement {
   161  	return NewMaxAPIVersionRequirement(
   162  		f.config,
   163  		commandName,
   164  		maximumVersion,
   165  	)
   166  }
   167  
   168  func (f apiRequirementFactory) NewUsageRequirement(cmd Usable, errorMessage string, pred func() bool) Requirement {
   169  	return NewUsageRequirement(cmd, errorMessage, pred)
   170  }
   171  
   172  func (f apiRequirementFactory) NewNumberArguments(passedArgs []string, expectedArgs ...string) Requirement {
   173  	return NewNumberArguments(passedArgs, expectedArgs)
   174  }