github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/requirements/factory.go (about)

     1  package requirements
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf/api"
     5  	"github.com/cloudfoundry/cli/cf/configuration/core_config"
     6  	"github.com/cloudfoundry/cli/cf/terminal"
     7  )
     8  
     9  type Requirement interface {
    10  	Execute() (success bool)
    11  }
    12  
    13  type Factory interface {
    14  	NewApplicationRequirement(name string) ApplicationRequirement
    15  	NewServiceInstanceRequirement(name string) ServiceInstanceRequirement
    16  	NewLoginRequirement() Requirement
    17  	NewSpaceRequirement(name string) SpaceRequirement
    18  	NewTargetedSpaceRequirement() Requirement
    19  	NewTargetedOrgRequirement() TargetedOrgRequirement
    20  	NewOrganizationRequirement(name string) OrganizationRequirement
    21  	NewDomainRequirement(name string) DomainRequirement
    22  	NewUserRequirement(username string) UserRequirement
    23  	NewBuildpackRequirement(buildpack string) BuildpackRequirement
    24  	NewApiEndpointRequirement() Requirement
    25  	NewMinCCApiVersionRequirement(commandName string, major, minor, patch int) Requirement
    26  }
    27  
    28  type apiRequirementFactory struct {
    29  	ui          terminal.UI
    30  	config      core_config.Reader
    31  	repoLocator api.RepositoryLocator
    32  }
    33  
    34  func NewFactory(ui terminal.UI, config core_config.Reader, repoLocator api.RepositoryLocator) (factory apiRequirementFactory) {
    35  	return apiRequirementFactory{ui, config, repoLocator}
    36  }
    37  
    38  func (f apiRequirementFactory) NewApplicationRequirement(name string) ApplicationRequirement {
    39  	return NewApplicationRequirement(
    40  		name,
    41  		f.ui,
    42  		f.repoLocator.GetApplicationRepository(),
    43  	)
    44  }
    45  
    46  func (f apiRequirementFactory) NewServiceInstanceRequirement(name string) ServiceInstanceRequirement {
    47  	return NewServiceInstanceRequirement(
    48  		name,
    49  		f.ui,
    50  		f.repoLocator.GetServiceRepository(),
    51  	)
    52  }
    53  
    54  func (f apiRequirementFactory) NewLoginRequirement() Requirement {
    55  	return NewLoginRequirement(
    56  		f.ui,
    57  		f.config,
    58  	)
    59  }
    60  
    61  func (f apiRequirementFactory) NewSpaceRequirement(name string) SpaceRequirement {
    62  	return NewSpaceRequirement(
    63  		name,
    64  		f.ui,
    65  		f.repoLocator.GetSpaceRepository(),
    66  	)
    67  }
    68  
    69  func (f apiRequirementFactory) NewTargetedSpaceRequirement() Requirement {
    70  	return NewTargetedSpaceRequirement(
    71  		f.ui,
    72  		f.config,
    73  	)
    74  }
    75  
    76  func (f apiRequirementFactory) NewTargetedOrgRequirement() TargetedOrgRequirement {
    77  	return NewTargetedOrgRequirement(
    78  		f.ui,
    79  		f.config,
    80  	)
    81  }
    82  
    83  func (f apiRequirementFactory) NewOrganizationRequirement(name string) OrganizationRequirement {
    84  	return NewOrganizationRequirement(
    85  		name,
    86  		f.ui,
    87  		f.repoLocator.GetOrganizationRepository(),
    88  	)
    89  }
    90  
    91  func (f apiRequirementFactory) NewDomainRequirement(name string) DomainRequirement {
    92  	return NewDomainRequirement(
    93  		name,
    94  		f.ui,
    95  		f.config,
    96  		f.repoLocator.GetDomainRepository(),
    97  	)
    98  }
    99  
   100  func (f apiRequirementFactory) NewUserRequirement(username string) UserRequirement {
   101  	return NewUserRequirement(
   102  		username,
   103  		f.ui,
   104  		f.repoLocator.GetUserRepository(),
   105  	)
   106  }
   107  
   108  func (f apiRequirementFactory) NewBuildpackRequirement(buildpack string) BuildpackRequirement {
   109  	return NewBuildpackRequirement(
   110  		buildpack,
   111  		f.ui,
   112  		f.repoLocator.GetBuildpackRepository(),
   113  	)
   114  }
   115  
   116  func (f apiRequirementFactory) NewApiEndpointRequirement() Requirement {
   117  	return NewApiEndpointRequirement(
   118  		f.ui,
   119  		f.config,
   120  	)
   121  }
   122  
   123  func (f apiRequirementFactory) NewMinCCApiVersionRequirement(commandName string, major, minor, patch int) Requirement {
   124  	return NewCCApiVersionRequirement(
   125  		f.ui,
   126  		f.config,
   127  		commandName,
   128  		major,
   129  		minor,
   130  		patch,
   131  	)
   132  }