updateCommandDependency := func(pluginCall bool) { deps.Ui = ui deps.Config = configRepo deps.ManifestRepo = manifestRepo deps.RepoLocator = deps.RepoLocator.SetApplicationRepository(appRepo) deps.RepoLocator = deps.RepoLocator.SetDomainRepository(domainRepo) deps.RepoLocator = deps.RepoLocator.SetRouteRepository(routeRepo) deps.RepoLocator = deps.RepoLocator.SetServiceRepository(serviceRepo) deps.RepoLocator = deps.RepoLocator.SetStackRepository(stackRepo) deps.RepoLocator = deps.RepoLocator.SetAuthenticationRepository(authRepo) deps.WordGenerator = wordGenerator deps.PushActor = actor deps.AppZipper = zipper deps.AppFiles = app_files deps.ProfilesManager, _ = profiles_manager.NewProfilesManagerFromEnvVar() //inject fake commands dependencies into registry command_registry.Register(starter) command_registry.Register(stopper) command_registry.Register(serviceBinder) command_registry.Commands.SetCommand(command_registry.Commands.FindCommand("push").SetDependency(deps, false)) } BeforeEach(func() { manifestRepo = &testmanifest.FakeManifestRepository{} starter = &testcmd.FakeApplicationStarter{} stopper = &testcmd.FakeApplicationStopper{} serviceBinder = &testcmd.FakeAppBinder{}
func NewDependency() Dependency { deps := Dependency{} deps.TeePrinter = terminal.NewTeePrinter() deps.Ui = terminal.NewUI(os.Stdin, deps.TeePrinter) deps.ManifestRepo = manifest.NewManifestDiskRepository() deps.AppManifest = manifest.NewGenerator() errorHandler := func(err error) { if err != nil { deps.Ui.Failed(fmt.Sprintf("Config error: %s", err)) } } deps.Config = core_config.NewRepositoryFromFilepath(config_helpers.DefaultFilePath(), errorHandler) deps.PluginConfig = plugin_config.NewPluginConfig(errorHandler) deps.Detector = &detection.JibberJabberDetector{} terminal.UserAskedForColors = deps.Config.ColorEnabled() terminal.InitColorSupport() if os.Getenv("CF_TRACE") != "" { trace.Logger = trace.NewLogger(os.Getenv("CF_TRACE")) } else { trace.Logger = trace.NewLogger(deps.Config.Trace()) } deps.Gateways = map[string]net.Gateway{ "auth": net.NewUAAGateway(deps.Config, deps.Ui), "cloud-controller": net.NewCloudControllerGateway(deps.Config, time.Now, deps.Ui), "uaa": net.NewUAAGateway(deps.Config, deps.Ui), "routing-api": net.NewRoutingApiGateway(deps.Config, time.Now, deps.Ui), } deps.RepoLocator = api.NewRepositoryLocator(deps.Config, deps.Gateways) deps.PluginModels = &pluginModels{Application: nil} deps.PlanBuilder = plan_builder.NewBuilder( deps.RepoLocator.GetServicePlanRepository(), deps.RepoLocator.GetServicePlanVisibilityRepository(), deps.RepoLocator.GetOrganizationRepository(), ) deps.ServiceBuilder = service_builder.NewBuilder( deps.RepoLocator.GetServiceRepository(), deps.PlanBuilder, ) deps.BrokerBuilder = broker_builder.NewBuilder( deps.RepoLocator.GetServiceBrokerRepository(), deps.ServiceBuilder, ) deps.PluginRepo = plugin_repo.NewPluginRepo() deps.ServiceHandler = actors.NewServiceHandler( deps.RepoLocator.GetOrganizationRepository(), deps.BrokerBuilder, deps.ServiceBuilder, ) deps.ServicePlanHandler = actors.NewServicePlanHandler( deps.RepoLocator.GetServicePlanRepository(), deps.RepoLocator.GetServicePlanVisibilityRepository(), deps.RepoLocator.GetOrganizationRepository(), deps.PlanBuilder, deps.ServiceBuilder, ) deps.WordGenerator = generator.NewWordGenerator() deps.AppZipper = app_files.ApplicationZipper{} deps.AppFiles = app_files.ApplicationFiles{} deps.PushActor = actors.NewPushActor(deps.RepoLocator.GetApplicationBitsRepository(), deps.AppZipper, deps.AppFiles) deps.ChecksumUtil = utils.NewSha1Checksum("") var err error deps.ProfilesManager, err = profiles_manager.NewProfilesManagerFromEnvVar() if err != nil { deps.Ui.Failed(fmt.Sprintf("Error when adding profiles to context:\n%s", err)) } return deps }