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