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 }