github.com/nimakaviani/cli@v6.37.1-0.20180619223813-e734901a73fa+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  	NewUnsupportedLegacyFlagRequirement(flags ...string) Requirement
    31  	NewUsageRequirement(Usable, string, func() bool) Requirement
    32  	NewNumberArguments([]string, ...string) Requirement
    33  }
    34  
    35  type apiRequirementFactory struct {
    36  	config      coreconfig.ReadWriter
    37  	repoLocator api.RepositoryLocator
    38  }
    39  
    40  func NewFactory(config coreconfig.ReadWriter, repoLocator api.RepositoryLocator) (factory apiRequirementFactory) {
    41  	return apiRequirementFactory{config, repoLocator}
    42  }
    43  
    44  func (f apiRequirementFactory) NewApplicationRequirement(name string) ApplicationRequirement {
    45  	return NewApplicationRequirement(
    46  		name,
    47  		f.repoLocator.GetApplicationRepository(),
    48  	)
    49  }
    50  
    51  func (f apiRequirementFactory) NewDEAApplicationRequirement(name string) DEAApplicationRequirement {
    52  	return NewDEAApplicationRequirement(
    53  		name,
    54  		f.repoLocator.GetApplicationRepository(),
    55  	)
    56  }
    57  
    58  func (f apiRequirementFactory) NewDiegoApplicationRequirement(name string) DiegoApplicationRequirement {
    59  	return NewDiegoApplicationRequirement(
    60  		name,
    61  		f.repoLocator.GetApplicationRepository(),
    62  	)
    63  }
    64  
    65  func (f apiRequirementFactory) NewServiceInstanceRequirement(name string) ServiceInstanceRequirement {
    66  	return NewServiceInstanceRequirement(
    67  		name,
    68  		f.repoLocator.GetServiceRepository(),
    69  	)
    70  }
    71  
    72  func (f apiRequirementFactory) NewLoginRequirement() Requirement {
    73  	return NewLoginRequirement(
    74  		f.config,
    75  	)
    76  }
    77  
    78  func (f apiRequirementFactory) NewRoutingAPIRequirement() Requirement {
    79  	req := Requirements{
    80  		f.NewMinAPIVersionRequirement(T("This command"), cf.TCPRoutingMinimumAPIVersion),
    81  		NewRoutingAPIRequirement(
    82  			f.config,
    83  		),
    84  	}
    85  
    86  	return req
    87  }
    88  
    89  func (f apiRequirementFactory) NewSpaceRequirement(name string) SpaceRequirement {
    90  	return NewSpaceRequirement(
    91  		name,
    92  		f.repoLocator.GetSpaceRepository(),
    93  	)
    94  }
    95  
    96  func (f apiRequirementFactory) NewTargetedSpaceRequirement() Requirement {
    97  	return NewTargetedSpaceRequirement(
    98  		f.config,
    99  	)
   100  }
   101  
   102  func (f apiRequirementFactory) NewTargetedOrgRequirement() TargetedOrgRequirement {
   103  	return NewTargetedOrgRequirement(
   104  		f.config,
   105  	)
   106  }
   107  
   108  func (f apiRequirementFactory) NewOrganizationRequirement(name string) OrganizationRequirement {
   109  	return NewOrganizationRequirement(
   110  		name,
   111  		f.repoLocator.GetOrganizationRepository(),
   112  	)
   113  }
   114  
   115  func (f apiRequirementFactory) NewDomainRequirement(name string) DomainRequirement {
   116  	return NewDomainRequirement(
   117  		name,
   118  		f.config,
   119  		f.repoLocator.GetDomainRepository(),
   120  	)
   121  }
   122  
   123  func (f apiRequirementFactory) NewUserRequirement(username string, wantGUID bool) UserRequirement {
   124  	return NewUserRequirement(
   125  		username,
   126  		f.repoLocator.GetUserRepository(),
   127  		wantGUID,
   128  	)
   129  }
   130  
   131  func (f apiRequirementFactory) NewBuildpackRequirement(buildpack, stack string) BuildpackRequirement {
   132  	return NewBuildpackRequirement(
   133  		buildpack,
   134  		stack,
   135  		f.repoLocator.GetBuildpackRepository(),
   136  	)
   137  }
   138  
   139  func (f apiRequirementFactory) NewAPIEndpointRequirement() Requirement {
   140  	return NewAPIEndpointRequirement(
   141  		f.config,
   142  	)
   143  }
   144  
   145  func (f apiRequirementFactory) NewMinAPIVersionRequirement(commandName string, requiredVersion semver.Version) Requirement {
   146  	r := NewMinAPIVersionRequirement(
   147  		f.config,
   148  		commandName,
   149  		requiredVersion,
   150  	)
   151  
   152  	refresher := coreconfig.APIConfigRefresher{
   153  		Endpoint:     f.config.APIEndpoint(),
   154  		EndpointRepo: f.repoLocator.GetEndpointRepository(),
   155  		Config:       f.config,
   156  	}
   157  
   158  	return NewConfigRefreshingRequirement(r, refresher)
   159  }
   160  
   161  func (f apiRequirementFactory) NewMaxAPIVersionRequirement(commandName string, maximumVersion semver.Version) Requirement {
   162  	return NewMaxAPIVersionRequirement(
   163  		f.config,
   164  		commandName,
   165  		maximumVersion,
   166  	)
   167  }
   168  
   169  func (f apiRequirementFactory) NewUnsupportedLegacyFlagRequirement(flags ...string) Requirement {
   170  	return NewUnsupportedLegacyFlagRequirement(flags)
   171  }
   172  
   173  func (f apiRequirementFactory) NewUsageRequirement(cmd Usable, errorMessage string, pred func() bool) Requirement {
   174  	return NewUsageRequirement(cmd, errorMessage, pred)
   175  }
   176  
   177  func (f apiRequirementFactory) NewNumberArguments(passedArgs []string, expectedArgs ...string) Requirement {
   178  	return NewNumberArguments(passedArgs, expectedArgs)
   179  }