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