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 }