github.com/tilt-dev/tilt@v0.36.0/internal/cli/wire_gen.go (about)

     1  // Code generated by Wire. DO NOT EDIT.
     2  
     3  //go:generate go run -mod=mod github.com/google/wire/cmd/wire
     4  //go:build !wireinject
     5  // +build !wireinject
     6  
     7  package cli
     8  
     9  import (
    10  	"context"
    11  	"time"
    12  
    13  	"github.com/google/wire"
    14  	"github.com/jonboulle/clockwork"
    15  	"github.com/spf13/afero"
    16  	"go.opentelemetry.io/otel/sdk/trace"
    17  	version2 "k8s.io/apimachinery/pkg/version"
    18  	"sigs.k8s.io/controller-runtime/pkg/client"
    19  
    20  	"github.com/tilt-dev/clusterid"
    21  	"github.com/tilt-dev/tilt/internal/analytics"
    22  	"github.com/tilt-dev/tilt/internal/build"
    23  	client2 "github.com/tilt-dev/tilt/internal/cli/client"
    24  	"github.com/tilt-dev/tilt/internal/cloud"
    25  	"github.com/tilt-dev/tilt/internal/cloud/cloudurl"
    26  	"github.com/tilt-dev/tilt/internal/containerupdate"
    27  	"github.com/tilt-dev/tilt/internal/controllers"
    28  	"github.com/tilt-dev/tilt/internal/controllers/core/cluster"
    29  	"github.com/tilt-dev/tilt/internal/controllers/core/cmd"
    30  	"github.com/tilt-dev/tilt/internal/controllers/core/cmdimage"
    31  	"github.com/tilt-dev/tilt/internal/controllers/core/configmap"
    32  	"github.com/tilt-dev/tilt/internal/controllers/core/dockercomposelogstream"
    33  	"github.com/tilt-dev/tilt/internal/controllers/core/dockercomposeservice"
    34  	"github.com/tilt-dev/tilt/internal/controllers/core/dockerimage"
    35  	"github.com/tilt-dev/tilt/internal/controllers/core/extension"
    36  	"github.com/tilt-dev/tilt/internal/controllers/core/extensionrepo"
    37  	"github.com/tilt-dev/tilt/internal/controllers/core/filewatch"
    38  	"github.com/tilt-dev/tilt/internal/controllers/core/filewatch/fsevent"
    39  	"github.com/tilt-dev/tilt/internal/controllers/core/imagemap"
    40  	"github.com/tilt-dev/tilt/internal/controllers/core/kubernetesapply"
    41  	"github.com/tilt-dev/tilt/internal/controllers/core/kubernetesdiscovery"
    42  	"github.com/tilt-dev/tilt/internal/controllers/core/liveupdate"
    43  	"github.com/tilt-dev/tilt/internal/controllers/core/podlogstream"
    44  	"github.com/tilt-dev/tilt/internal/controllers/core/portforward"
    45  	"github.com/tilt-dev/tilt/internal/controllers/core/session"
    46  	tiltfile2 "github.com/tilt-dev/tilt/internal/controllers/core/tiltfile"
    47  	"github.com/tilt-dev/tilt/internal/controllers/core/togglebutton"
    48  	"github.com/tilt-dev/tilt/internal/controllers/core/uibutton"
    49  	"github.com/tilt-dev/tilt/internal/controllers/core/uiresource"
    50  	"github.com/tilt-dev/tilt/internal/controllers/core/uisession"
    51  	"github.com/tilt-dev/tilt/internal/docker"
    52  	"github.com/tilt-dev/tilt/internal/dockercompose"
    53  	"github.com/tilt-dev/tilt/internal/dockerfile"
    54  	"github.com/tilt-dev/tilt/internal/engine"
    55  	analytics2 "github.com/tilt-dev/tilt/internal/engine/analytics"
    56  	"github.com/tilt-dev/tilt/internal/engine/buildcontrol"
    57  	"github.com/tilt-dev/tilt/internal/engine/configs"
    58  	"github.com/tilt-dev/tilt/internal/engine/dockerprune"
    59  	"github.com/tilt-dev/tilt/internal/engine/k8srollout"
    60  	"github.com/tilt-dev/tilt/internal/engine/k8swatch"
    61  	"github.com/tilt-dev/tilt/internal/engine/local"
    62  	session2 "github.com/tilt-dev/tilt/internal/engine/session"
    63  	"github.com/tilt-dev/tilt/internal/engine/telemetry"
    64  	uiresource2 "github.com/tilt-dev/tilt/internal/engine/uiresource"
    65  	uisession2 "github.com/tilt-dev/tilt/internal/engine/uisession"
    66  	"github.com/tilt-dev/tilt/internal/feature"
    67  	"github.com/tilt-dev/tilt/internal/git"
    68  	"github.com/tilt-dev/tilt/internal/hud"
    69  	"github.com/tilt-dev/tilt/internal/hud/prompt"
    70  	"github.com/tilt-dev/tilt/internal/hud/server"
    71  	"github.com/tilt-dev/tilt/internal/k8s"
    72  	"github.com/tilt-dev/tilt/internal/k8s/kubeconfig"
    73  	"github.com/tilt-dev/tilt/internal/localexec"
    74  	"github.com/tilt-dev/tilt/internal/openurl"
    75  	"github.com/tilt-dev/tilt/internal/store"
    76  	"github.com/tilt-dev/tilt/internal/store/liveupdates"
    77  	"github.com/tilt-dev/tilt/internal/tiltfile"
    78  	"github.com/tilt-dev/tilt/internal/tiltfile/cisettings"
    79  	"github.com/tilt-dev/tilt/internal/tiltfile/config"
    80  	"github.com/tilt-dev/tilt/internal/tiltfile/k8scontext"
    81  	"github.com/tilt-dev/tilt/internal/tiltfile/tiltextension"
    82  	"github.com/tilt-dev/tilt/internal/tiltfile/version"
    83  	"github.com/tilt-dev/tilt/internal/token"
    84  	"github.com/tilt-dev/tilt/internal/tracer"
    85  	"github.com/tilt-dev/tilt/internal/xdg"
    86  	"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
    87  	"github.com/tilt-dev/tilt/pkg/logger"
    88  	"github.com/tilt-dev/tilt/pkg/model"
    89  	"github.com/tilt-dev/wmclient/pkg/dirs"
    90  
    91  	_ "embed"
    92  )
    93  
    94  // Injectors from wire.go:
    95  
    96  func wireTiltfileResult(ctx context.Context, analytics2 *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (cmdTiltfileResultDeps, error) {
    97  	k8sKubeContextOverride := ProvideKubeContextOverride()
    98  	k8sNamespaceOverride := ProvideNamespaceOverride()
    99  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   100  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   101  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   102  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   103  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   104  	plugin := k8scontext.NewPlugin(kubeContext, namespace, product)
   105  	tiltBuild := provideTiltInfo()
   106  	versionPlugin := version.NewPlugin(tiltBuild)
   107  	configPlugin := config.NewPlugin(subcommand)
   108  	deferredClient := controllers.ProvideDeferredClient()
   109  	reducer := _wireReducerValue
   110  	storeLogActionsFlag := provideLogActions()
   111  	storeStore := store.NewStore(reducer, storeLogActionsFlag)
   112  	base := xdg.NewTiltDevBase()
   113  	reconciler, err := extensionrepo.NewReconciler(deferredClient, storeStore, base)
   114  	if err != nil {
   115  		return cmdTiltfileResultDeps{}, err
   116  	}
   117  	scheme := v1alpha1.NewScheme()
   118  	extensionReconciler := extension.NewReconciler(deferredClient, scheme, analytics2)
   119  	tiltextensionPlugin := tiltextension.NewPlugin(reconciler, extensionReconciler)
   120  	ciTimeoutFlag := provideCITimeoutFlag()
   121  	cisettingsPlugin := cisettings.NewPlugin(ciTimeoutFlag)
   122  	realClientCreator := _wireRealClientCreatorValue
   123  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   124  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   125  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   126  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   127  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   128  	client := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   129  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, client, minikubeClient)
   130  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   131  	dockerComposeClient := dockercompose.NewDockerComposeClient(localEnv)
   132  	webHost := provideWebHost()
   133  	webPort := provideWebPort()
   134  	fs := afero.NewOsFs()
   135  	apiServerName := model.ProvideAPIServerName(webPort)
   136  	writer := kubeconfig.NewWriter(base, fs, apiServerName)
   137  	kubeconfigPathOnce := k8s.ProvideDefaultLocalKubeconfigPath(ctx, writer, apiConfigOrError)
   138  	env := localexec.DefaultEnv(webPort, webHost, kubeconfigPathOnce)
   139  	processExecer := localexec.NewProcessExecer(env)
   140  	defaults := _wireDefaultsValue
   141  	tiltfileLoader := tiltfile.ProvideTiltfileLoader(analytics2, plugin, versionPlugin, configPlugin, tiltextensionPlugin, cisettingsPlugin, dockerComposeClient, webHost, processExecer, defaults, product)
   142  	cliCmdTiltfileResultDeps := newTiltfileResultDeps(tiltfileLoader)
   143  	return cliCmdTiltfileResultDeps, nil
   144  }
   145  
   146  var (
   147  	_wireReducerValue           = engine.UpperReducer
   148  	_wireRealClientCreatorValue = docker.RealClientCreator{}
   149  	_wireDefaultsValue          = feature.MainDefaults
   150  )
   151  
   152  func wireDockerPrune(ctx context.Context, analytics2 *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (dpDeps, error) {
   153  	realClientCreator := _wireRealClientCreatorValue
   154  	k8sKubeContextOverride := ProvideKubeContextOverride()
   155  	k8sNamespaceOverride := ProvideNamespaceOverride()
   156  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   157  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   158  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   159  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   160  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   161  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   162  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   163  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   164  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   165  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   166  	client := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   167  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, client, minikubeClient)
   168  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   169  	localClient := docker.ProvideLocalCli(ctx, localEnv)
   170  	clusterClient, err := docker.ProvideClusterCli(ctx, localEnv, clusterEnv, localClient)
   171  	if err != nil {
   172  		return dpDeps{}, err
   173  	}
   174  	compositeClient := docker.ProvideSwitchCli(clusterClient, localClient)
   175  	plugin := k8scontext.NewPlugin(kubeContext, namespace, product)
   176  	tiltBuild := provideTiltInfo()
   177  	versionPlugin := version.NewPlugin(tiltBuild)
   178  	configPlugin := config.NewPlugin(subcommand)
   179  	deferredClient := controllers.ProvideDeferredClient()
   180  	reducer := _wireReducerValue
   181  	storeLogActionsFlag := provideLogActions()
   182  	storeStore := store.NewStore(reducer, storeLogActionsFlag)
   183  	base := xdg.NewTiltDevBase()
   184  	reconciler, err := extensionrepo.NewReconciler(deferredClient, storeStore, base)
   185  	if err != nil {
   186  		return dpDeps{}, err
   187  	}
   188  	scheme := v1alpha1.NewScheme()
   189  	extensionReconciler := extension.NewReconciler(deferredClient, scheme, analytics2)
   190  	tiltextensionPlugin := tiltextension.NewPlugin(reconciler, extensionReconciler)
   191  	ciTimeoutFlag := provideCITimeoutFlag()
   192  	cisettingsPlugin := cisettings.NewPlugin(ciTimeoutFlag)
   193  	dockerComposeClient := dockercompose.NewDockerComposeClient(localEnv)
   194  	webHost := provideWebHost()
   195  	webPort := provideWebPort()
   196  	fs := afero.NewOsFs()
   197  	apiServerName := model.ProvideAPIServerName(webPort)
   198  	writer := kubeconfig.NewWriter(base, fs, apiServerName)
   199  	kubeconfigPathOnce := k8s.ProvideDefaultLocalKubeconfigPath(ctx, writer, apiConfigOrError)
   200  	env := localexec.DefaultEnv(webPort, webHost, kubeconfigPathOnce)
   201  	processExecer := localexec.NewProcessExecer(env)
   202  	defaults := _wireDefaultsValue
   203  	tiltfileLoader := tiltfile.ProvideTiltfileLoader(analytics2, plugin, versionPlugin, configPlugin, tiltextensionPlugin, cisettingsPlugin, dockerComposeClient, webHost, processExecer, defaults, product)
   204  	cliDpDeps := newDPDeps(compositeClient, client, tiltfileLoader)
   205  	return cliDpDeps, nil
   206  }
   207  
   208  func wireCmdUp(ctx context.Context, analytics3 *analytics.TiltAnalytics, cmdTags analytics2.CmdTags, subcommand model.TiltSubcommand) (CmdUpDeps, error) {
   209  	reducer := _wireReducerValue
   210  	storeLogActionsFlag := provideLogActions()
   211  	storeStore := store.NewStore(reducer, storeLogActionsFlag)
   212  	tiltDevDir, err := dirs.UseTiltDevDir()
   213  	if err != nil {
   214  		return CmdUpDeps{}, err
   215  	}
   216  	configAccess := server.ProvideConfigAccess(tiltDevDir)
   217  	webPort := provideWebPort()
   218  	apiServerName := model.ProvideAPIServerName(webPort)
   219  	webHost := provideWebHost()
   220  	webListener, err := server.ProvideWebListener(webHost, webPort)
   221  	if err != nil {
   222  		return CmdUpDeps{}, err
   223  	}
   224  	tiltBuild := provideTiltInfo()
   225  	connProvider := server.ProvideDefaultConnProvider()
   226  	bearerToken, err := server.NewBearerToken()
   227  	if err != nil {
   228  		return CmdUpDeps{}, err
   229  	}
   230  	base := xdg.NewTiltDevBase()
   231  	generatableKeyCert, err := server.ProvideKeyCert(apiServerName, webHost, webPort, base)
   232  	if err != nil {
   233  		return CmdUpDeps{}, err
   234  	}
   235  	apiServerPort, err := server.ProvideAPIServerPort()
   236  	if err != nil {
   237  		return CmdUpDeps{}, err
   238  	}
   239  	apiserverConfig, err := server.ProvideTiltServerOptions(ctx, tiltBuild, connProvider, bearerToken, generatableKeyCert, apiServerPort)
   240  	if err != nil {
   241  		return CmdUpDeps{}, err
   242  	}
   243  	webMode, err := provideWebMode(tiltBuild)
   244  	if err != nil {
   245  		return CmdUpDeps{}, err
   246  	}
   247  	webVersion := provideWebVersion(tiltBuild)
   248  	assetsServer, err := provideAssetServer(webMode, webVersion)
   249  	if err != nil {
   250  		return CmdUpDeps{}, err
   251  	}
   252  	websocketList := server.NewWebsocketList()
   253  	deferredClient := controllers.ProvideDeferredClient()
   254  	headsUpServer, err := server.ProvideHeadsUpServer(ctx, storeStore, assetsServer, analytics3, websocketList, deferredClient)
   255  	if err != nil {
   256  		return CmdUpDeps{}, err
   257  	}
   258  	webURL, err := provideWebURL(webHost, webPort)
   259  	if err != nil {
   260  		return CmdUpDeps{}, err
   261  	}
   262  	headsUpServerController := server.ProvideHeadsUpServerController(configAccess, apiServerName, webListener, apiserverConfig, headsUpServer, assetsServer, webURL)
   263  	scheme := v1alpha1.NewScheme()
   264  	uncachedObjects := controllers.ProvideUncachedObjects()
   265  	tiltServerControllerManager, err := controllers.NewTiltServerControllerManager(apiserverConfig, scheme, deferredClient, uncachedObjects)
   266  	if err != nil {
   267  		return CmdUpDeps{}, err
   268  	}
   269  	watcherMaker := fsevent.ProvideWatcherMaker()
   270  	timerMaker := fsevent.ProvideTimerMaker()
   271  	clock := clockwork.NewRealClock()
   272  	controller := filewatch.NewController(deferredClient, storeStore, watcherMaker, timerMaker, scheme, clock)
   273  	fs := afero.NewOsFs()
   274  	writer := kubeconfig.NewWriter(base, fs, apiServerName)
   275  	k8sKubeContextOverride := ProvideKubeContextOverride()
   276  	k8sNamespaceOverride := ProvideNamespaceOverride()
   277  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   278  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   279  	kubeconfigPathOnce := k8s.ProvideDefaultLocalKubeconfigPath(ctx, writer, apiConfigOrError)
   280  	env := localexec.DefaultEnv(webPort, webHost, kubeconfigPathOnce)
   281  	execer := cmd.ProvideExecer(env)
   282  	proberManager := cmd.ProvideProberManager()
   283  	cmdController := cmd.NewController(ctx, execer, proberManager, deferredClient, storeStore, clock, scheme)
   284  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   285  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   286  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   287  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   288  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   289  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   290  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   291  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   292  	client := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   293  	podSource := podlogstream.NewPodSource(ctx, client, scheme, clock)
   294  	podlogstreamController := podlogstream.NewController(ctx, deferredClient, scheme, storeStore, client, podSource, clock)
   295  	connectionManager := cluster.NewConnectionManager()
   296  	containerRestartDetector := kubernetesdiscovery.NewContainerRestartDetector()
   297  	reconciler := kubernetesdiscovery.NewReconciler(deferredClient, scheme, connectionManager, containerRestartDetector, storeStore)
   298  	processExecer := localexec.NewProcessExecer(env)
   299  	kubernetesapplyReconciler := kubernetesapply.NewReconciler(deferredClient, client, scheme, storeStore, processExecer)
   300  	uisessionReconciler := uisession.NewReconciler(deferredClient, websocketList)
   301  	uiresourceReconciler := uiresource.NewReconciler(deferredClient, websocketList, storeStore)
   302  	uibuttonReconciler := uibutton.NewReconciler(deferredClient, websocketList, storeStore)
   303  	portforwardReconciler := portforward.NewReconciler(deferredClient, scheme, storeStore, connectionManager)
   304  	plugin := k8scontext.NewPlugin(kubeContext, namespace, product)
   305  	versionPlugin := version.NewPlugin(tiltBuild)
   306  	configPlugin := config.NewPlugin(subcommand)
   307  	extensionrepoReconciler, err := extensionrepo.NewReconciler(deferredClient, storeStore, base)
   308  	if err != nil {
   309  		return CmdUpDeps{}, err
   310  	}
   311  	extensionReconciler := extension.NewReconciler(deferredClient, scheme, analytics3)
   312  	tiltextensionPlugin := tiltextension.NewPlugin(extensionrepoReconciler, extensionReconciler)
   313  	ciTimeoutFlag := provideCITimeoutFlag()
   314  	cisettingsPlugin := cisettings.NewPlugin(ciTimeoutFlag)
   315  	realClientCreator := _wireRealClientCreatorValue
   316  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, client, minikubeClient)
   317  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   318  	dockerComposeClient := dockercompose.NewDockerComposeClient(localEnv)
   319  	defaults := _wireDefaultsValue
   320  	tiltfileLoader := tiltfile.ProvideTiltfileLoader(analytics3, plugin, versionPlugin, configPlugin, tiltextensionPlugin, cisettingsPlugin, dockerComposeClient, webHost, processExecer, defaults, product)
   321  	localClient := docker.ProvideLocalCli(ctx, localEnv)
   322  	clusterClient, err := docker.ProvideClusterCli(ctx, localEnv, clusterEnv, localClient)
   323  	if err != nil {
   324  		return CmdUpDeps{}, err
   325  	}
   326  	compositeClient := docker.ProvideSwitchCli(clusterClient, localClient)
   327  	engineMode := _wireEngineModeValue
   328  	tiltfileReconciler := tiltfile2.NewReconciler(storeStore, tiltfileLoader, compositeClient, deferredClient, scheme, engineMode, k8sKubeContextOverride, k8sNamespaceOverride, ciTimeoutFlag)
   329  	togglebuttonReconciler := togglebutton.NewReconciler(deferredClient, scheme)
   330  	dockerUpdater := containerupdate.NewDockerUpdater(compositeClient)
   331  	execUpdater := containerupdate.NewExecUpdater(client)
   332  	liveupdatesUpdateModeFlag := provideUpdateModeFlag()
   333  	updateMode, err := liveupdates.ProvideUpdateMode(liveupdatesUpdateModeFlag, kubeContext, clusterEnv)
   334  	if err != nil {
   335  		return CmdUpDeps{}, err
   336  	}
   337  	liveupdateReconciler := liveupdate.NewReconciler(storeStore, dockerUpdater, execUpdater, updateMode, kubeContext, deferredClient, scheme)
   338  	configmapReconciler := configmap.NewReconciler(deferredClient, storeStore)
   339  	labels := _wireLabelsValue
   340  	dockerBuilder := build.NewDockerBuilder(compositeClient, labels)
   341  	buildClock := build.ProvideClock()
   342  	customBuilder := build.NewCustomBuilder(compositeClient, buildClock, cmdController)
   343  	kindLoader := build.NewKINDLoader()
   344  	imageBuilder := build.NewImageBuilder(dockerBuilder, customBuilder, kindLoader)
   345  	dockerimageReconciler := dockerimage.NewReconciler(deferredClient, storeStore, scheme, compositeClient, imageBuilder)
   346  	cmdimageReconciler := cmdimage.NewReconciler(deferredClient, storeStore, scheme, compositeClient, imageBuilder)
   347  	dockerClientFactory := _wireDockerClientFuncValue
   348  	kubernetesClientFactory := _wireKubernetesClientFuncValue
   349  	clusterReconciler := cluster.NewReconciler(ctx, deferredClient, storeStore, clock, connectionManager, localEnv, dockerClientFactory, kubernetesClientFactory, websocketList, writer, kubeconfigPathOnce)
   350  	disableSubscriber := dockercomposeservice.NewDisableSubscriber(ctx, dockerComposeClient, clock)
   351  	dockercomposeserviceReconciler := dockercomposeservice.NewReconciler(deferredClient, dockerComposeClient, compositeClient, storeStore, scheme, disableSubscriber)
   352  	imagemapReconciler := imagemap.NewReconciler(deferredClient, storeStore)
   353  	dockercomposelogstreamReconciler := dockercomposelogstream.NewReconciler(deferredClient, storeStore, dockerComposeClient, compositeClient)
   354  	sessionReconciler := session.NewReconciler(deferredClient, storeStore, clock)
   355  	v := controllers.ProvideControllers(controller, cmdController, podlogstreamController, reconciler, kubernetesapplyReconciler, uisessionReconciler, uiresourceReconciler, uibuttonReconciler, portforwardReconciler, tiltfileReconciler, togglebuttonReconciler, extensionReconciler, extensionrepoReconciler, liveupdateReconciler, configmapReconciler, dockerimageReconciler, cmdimageReconciler, clusterReconciler, dockercomposeserviceReconciler, imagemapReconciler, dockercomposelogstreamReconciler, sessionReconciler)
   356  	controllerBuilder := controllers.NewControllerBuilder(tiltServerControllerManager, v)
   357  	v2 := provideClock()
   358  	renderer := hud.NewRenderer(v2)
   359  	openURL := _wireOpenURLValue
   360  	headsUpDisplay := hud.NewHud(renderer, webURL, analytics3, openURL)
   361  	stdout := hud.ProvideStdout()
   362  	incrementalPrinter := hud.NewIncrementalPrinter(stdout)
   363  	filterSource := provideLogSource()
   364  	filterResources := provideLogResources()
   365  	filterLevel := provideLogLevel()
   366  	logFilter := hud.NewLogFilter(filterSource, filterResources, filterLevel)
   367  	terminalStream := hud.NewTerminalStream(incrementalPrinter, logFilter, storeStore)
   368  	openInput := _wireOpenInputValue
   369  	terminalPrompt := prompt.NewTerminalPrompt(analytics3, openInput, openURL, stdout, webHost, webURL)
   370  	serviceWatcher := k8swatch.NewServiceWatcher(connectionManager, namespace)
   371  	imageBuildAndDeployer := buildcontrol.NewImageBuildAndDeployer(dockerimageReconciler, cmdimageReconciler, imageBuilder, analytics3, buildClock, deferredClient, kubernetesapplyReconciler)
   372  	dockerComposeBuildAndDeployer := buildcontrol.NewDockerComposeBuildAndDeployer(dockerimageReconciler, cmdimageReconciler, imageBuilder, dockercomposeserviceReconciler, buildClock, deferredClient)
   373  	localTargetBuildAndDeployer := buildcontrol.NewLocalTargetBuildAndDeployer(buildClock, deferredClient, cmdController)
   374  	buildOrder := engine.DefaultBuildOrder(imageBuildAndDeployer, dockerComposeBuildAndDeployer, localTargetBuildAndDeployer, updateMode)
   375  	spanCollector := tracer.NewSpanCollector(ctx)
   376  	traceTracer := tracer.InitOpenTelemetry(spanCollector)
   377  	compositeBuildAndDeployer := engine.NewCompositeBuildAndDeployer(buildOrder, traceTracer)
   378  	buildController := engine.NewBuildController(compositeBuildAndDeployer)
   379  	configsController := configs.NewConfigsController(deferredClient)
   380  	triggerQueueSubscriber := configs.NewTriggerQueueSubscriber(deferredClient)
   381  	analyticsReporter := analytics2.ProvideAnalyticsReporter(analytics3, storeStore, client, product, defaults)
   382  	analyticsUpdater := analytics2.NewAnalyticsUpdater(analytics3, cmdTags, engineMode)
   383  	eventWatchManager := k8swatch.NewEventWatchManager(connectionManager, namespace)
   384  	httpClient := cloud.ProvideHttpClient()
   385  	cloudStatusManager := cloud.NewStatusManager(httpClient, clock)
   386  	dockerPruner := dockerprune.NewDockerPruner(compositeClient)
   387  	telemetryController := telemetry.NewController(buildClock, spanCollector)
   388  	serverController := local.NewServerController(deferredClient)
   389  	podMonitor := k8srollout.NewPodMonitor(clock)
   390  	sessionController := session2.NewController(sessionReconciler)
   391  	subscriber := uisession2.NewSubscriber(deferredClient)
   392  	uiresourceSubscriber := uiresource2.NewSubscriber(deferredClient)
   393  	v3 := engine.ProvideSubscribers(headsUpServerController, tiltServerControllerManager, controllerBuilder, headsUpDisplay, terminalStream, terminalPrompt, serviceWatcher, buildController, configsController, triggerQueueSubscriber, analyticsReporter, analyticsUpdater, eventWatchManager, cloudStatusManager, dockerPruner, telemetryController, serverController, podMonitor, sessionController, subscriber, uiresourceSubscriber)
   394  	upper, err := engine.NewUpper(ctx, storeStore, v3)
   395  	if err != nil {
   396  		return CmdUpDeps{}, err
   397  	}
   398  	tokenToken, err := token.GetOrCreateToken(tiltDevDir)
   399  	if err != nil {
   400  		return CmdUpDeps{}, err
   401  	}
   402  	address := cloudurl.ProvideAddress()
   403  	snapshotter := cloud.NewSnapshotter(storeStore, deferredClient)
   404  	cmdUpDeps := CmdUpDeps{
   405  		Upper:        upper,
   406  		TiltBuild:    tiltBuild,
   407  		Token:        tokenToken,
   408  		CloudAddress: address,
   409  		Prompt:       terminalPrompt,
   410  		Snapshotter:  snapshotter,
   411  	}
   412  	return cmdUpDeps, nil
   413  }
   414  
   415  var (
   416  	_wireEngineModeValue           = store.EngineModeUp
   417  	_wireLabelsValue               = dockerfile.Labels{}
   418  	_wireDockerClientFuncValue     = cluster.DockerClientFunc(cluster.DockerClientFromEnv)
   419  	_wireKubernetesClientFuncValue = cluster.KubernetesClientFunc(cluster.KubernetesClientFromEnv)
   420  	_wireOpenURLValue              = openurl.OpenURL(openurl.BrowserOpen)
   421  	_wireOpenInputValue            = prompt.OpenInput(prompt.TTYOpen)
   422  )
   423  
   424  func wireCmdCI(ctx context.Context, analytics3 *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (CmdCIDeps, error) {
   425  	reducer := _wireReducerValue
   426  	storeLogActionsFlag := provideLogActions()
   427  	storeStore := store.NewStore(reducer, storeLogActionsFlag)
   428  	tiltDevDir, err := dirs.UseTiltDevDir()
   429  	if err != nil {
   430  		return CmdCIDeps{}, err
   431  	}
   432  	configAccess := server.ProvideConfigAccess(tiltDevDir)
   433  	webPort := provideWebPort()
   434  	apiServerName := model.ProvideAPIServerName(webPort)
   435  	webHost := provideWebHost()
   436  	webListener, err := server.ProvideWebListener(webHost, webPort)
   437  	if err != nil {
   438  		return CmdCIDeps{}, err
   439  	}
   440  	tiltBuild := provideTiltInfo()
   441  	connProvider := server.ProvideDefaultConnProvider()
   442  	bearerToken, err := server.NewBearerToken()
   443  	if err != nil {
   444  		return CmdCIDeps{}, err
   445  	}
   446  	base := xdg.NewTiltDevBase()
   447  	generatableKeyCert, err := server.ProvideKeyCert(apiServerName, webHost, webPort, base)
   448  	if err != nil {
   449  		return CmdCIDeps{}, err
   450  	}
   451  	apiServerPort, err := server.ProvideAPIServerPort()
   452  	if err != nil {
   453  		return CmdCIDeps{}, err
   454  	}
   455  	apiserverConfig, err := server.ProvideTiltServerOptions(ctx, tiltBuild, connProvider, bearerToken, generatableKeyCert, apiServerPort)
   456  	if err != nil {
   457  		return CmdCIDeps{}, err
   458  	}
   459  	webMode, err := provideWebMode(tiltBuild)
   460  	if err != nil {
   461  		return CmdCIDeps{}, err
   462  	}
   463  	webVersion := provideWebVersion(tiltBuild)
   464  	assetsServer, err := provideAssetServer(webMode, webVersion)
   465  	if err != nil {
   466  		return CmdCIDeps{}, err
   467  	}
   468  	websocketList := server.NewWebsocketList()
   469  	deferredClient := controllers.ProvideDeferredClient()
   470  	headsUpServer, err := server.ProvideHeadsUpServer(ctx, storeStore, assetsServer, analytics3, websocketList, deferredClient)
   471  	if err != nil {
   472  		return CmdCIDeps{}, err
   473  	}
   474  	webURL, err := provideWebURL(webHost, webPort)
   475  	if err != nil {
   476  		return CmdCIDeps{}, err
   477  	}
   478  	headsUpServerController := server.ProvideHeadsUpServerController(configAccess, apiServerName, webListener, apiserverConfig, headsUpServer, assetsServer, webURL)
   479  	scheme := v1alpha1.NewScheme()
   480  	uncachedObjects := controllers.ProvideUncachedObjects()
   481  	tiltServerControllerManager, err := controllers.NewTiltServerControllerManager(apiserverConfig, scheme, deferredClient, uncachedObjects)
   482  	if err != nil {
   483  		return CmdCIDeps{}, err
   484  	}
   485  	watcherMaker := fsevent.ProvideWatcherMaker()
   486  	timerMaker := fsevent.ProvideTimerMaker()
   487  	clock := clockwork.NewRealClock()
   488  	controller := filewatch.NewController(deferredClient, storeStore, watcherMaker, timerMaker, scheme, clock)
   489  	fs := afero.NewOsFs()
   490  	writer := kubeconfig.NewWriter(base, fs, apiServerName)
   491  	k8sKubeContextOverride := ProvideKubeContextOverride()
   492  	k8sNamespaceOverride := ProvideNamespaceOverride()
   493  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   494  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   495  	kubeconfigPathOnce := k8s.ProvideDefaultLocalKubeconfigPath(ctx, writer, apiConfigOrError)
   496  	env := localexec.DefaultEnv(webPort, webHost, kubeconfigPathOnce)
   497  	execer := cmd.ProvideExecer(env)
   498  	proberManager := cmd.ProvideProberManager()
   499  	cmdController := cmd.NewController(ctx, execer, proberManager, deferredClient, storeStore, clock, scheme)
   500  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   501  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   502  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   503  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   504  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   505  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   506  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   507  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   508  	client := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   509  	podSource := podlogstream.NewPodSource(ctx, client, scheme, clock)
   510  	podlogstreamController := podlogstream.NewController(ctx, deferredClient, scheme, storeStore, client, podSource, clock)
   511  	connectionManager := cluster.NewConnectionManager()
   512  	containerRestartDetector := kubernetesdiscovery.NewContainerRestartDetector()
   513  	reconciler := kubernetesdiscovery.NewReconciler(deferredClient, scheme, connectionManager, containerRestartDetector, storeStore)
   514  	processExecer := localexec.NewProcessExecer(env)
   515  	kubernetesapplyReconciler := kubernetesapply.NewReconciler(deferredClient, client, scheme, storeStore, processExecer)
   516  	uisessionReconciler := uisession.NewReconciler(deferredClient, websocketList)
   517  	uiresourceReconciler := uiresource.NewReconciler(deferredClient, websocketList, storeStore)
   518  	uibuttonReconciler := uibutton.NewReconciler(deferredClient, websocketList, storeStore)
   519  	portforwardReconciler := portforward.NewReconciler(deferredClient, scheme, storeStore, connectionManager)
   520  	plugin := k8scontext.NewPlugin(kubeContext, namespace, product)
   521  	versionPlugin := version.NewPlugin(tiltBuild)
   522  	configPlugin := config.NewPlugin(subcommand)
   523  	extensionrepoReconciler, err := extensionrepo.NewReconciler(deferredClient, storeStore, base)
   524  	if err != nil {
   525  		return CmdCIDeps{}, err
   526  	}
   527  	extensionReconciler := extension.NewReconciler(deferredClient, scheme, analytics3)
   528  	tiltextensionPlugin := tiltextension.NewPlugin(extensionrepoReconciler, extensionReconciler)
   529  	ciTimeoutFlag := provideCITimeoutFlag()
   530  	cisettingsPlugin := cisettings.NewPlugin(ciTimeoutFlag)
   531  	realClientCreator := _wireRealClientCreatorValue
   532  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, client, minikubeClient)
   533  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   534  	dockerComposeClient := dockercompose.NewDockerComposeClient(localEnv)
   535  	defaults := _wireDefaultsValue
   536  	tiltfileLoader := tiltfile.ProvideTiltfileLoader(analytics3, plugin, versionPlugin, configPlugin, tiltextensionPlugin, cisettingsPlugin, dockerComposeClient, webHost, processExecer, defaults, product)
   537  	localClient := docker.ProvideLocalCli(ctx, localEnv)
   538  	clusterClient, err := docker.ProvideClusterCli(ctx, localEnv, clusterEnv, localClient)
   539  	if err != nil {
   540  		return CmdCIDeps{}, err
   541  	}
   542  	compositeClient := docker.ProvideSwitchCli(clusterClient, localClient)
   543  	engineMode := _wireStoreEngineModeValue
   544  	tiltfileReconciler := tiltfile2.NewReconciler(storeStore, tiltfileLoader, compositeClient, deferredClient, scheme, engineMode, k8sKubeContextOverride, k8sNamespaceOverride, ciTimeoutFlag)
   545  	togglebuttonReconciler := togglebutton.NewReconciler(deferredClient, scheme)
   546  	dockerUpdater := containerupdate.NewDockerUpdater(compositeClient)
   547  	execUpdater := containerupdate.NewExecUpdater(client)
   548  	liveupdatesUpdateModeFlag := provideUpdateModeFlag()
   549  	updateMode, err := liveupdates.ProvideUpdateMode(liveupdatesUpdateModeFlag, kubeContext, clusterEnv)
   550  	if err != nil {
   551  		return CmdCIDeps{}, err
   552  	}
   553  	liveupdateReconciler := liveupdate.NewReconciler(storeStore, dockerUpdater, execUpdater, updateMode, kubeContext, deferredClient, scheme)
   554  	configmapReconciler := configmap.NewReconciler(deferredClient, storeStore)
   555  	labels := _wireLabelsValue
   556  	dockerBuilder := build.NewDockerBuilder(compositeClient, labels)
   557  	buildClock := build.ProvideClock()
   558  	customBuilder := build.NewCustomBuilder(compositeClient, buildClock, cmdController)
   559  	kindLoader := build.NewKINDLoader()
   560  	imageBuilder := build.NewImageBuilder(dockerBuilder, customBuilder, kindLoader)
   561  	dockerimageReconciler := dockerimage.NewReconciler(deferredClient, storeStore, scheme, compositeClient, imageBuilder)
   562  	cmdimageReconciler := cmdimage.NewReconciler(deferredClient, storeStore, scheme, compositeClient, imageBuilder)
   563  	dockerClientFactory := _wireDockerClientFuncValue
   564  	kubernetesClientFactory := _wireKubernetesClientFuncValue
   565  	clusterReconciler := cluster.NewReconciler(ctx, deferredClient, storeStore, clock, connectionManager, localEnv, dockerClientFactory, kubernetesClientFactory, websocketList, writer, kubeconfigPathOnce)
   566  	disableSubscriber := dockercomposeservice.NewDisableSubscriber(ctx, dockerComposeClient, clock)
   567  	dockercomposeserviceReconciler := dockercomposeservice.NewReconciler(deferredClient, dockerComposeClient, compositeClient, storeStore, scheme, disableSubscriber)
   568  	imagemapReconciler := imagemap.NewReconciler(deferredClient, storeStore)
   569  	dockercomposelogstreamReconciler := dockercomposelogstream.NewReconciler(deferredClient, storeStore, dockerComposeClient, compositeClient)
   570  	sessionReconciler := session.NewReconciler(deferredClient, storeStore, clock)
   571  	v := controllers.ProvideControllers(controller, cmdController, podlogstreamController, reconciler, kubernetesapplyReconciler, uisessionReconciler, uiresourceReconciler, uibuttonReconciler, portforwardReconciler, tiltfileReconciler, togglebuttonReconciler, extensionReconciler, extensionrepoReconciler, liveupdateReconciler, configmapReconciler, dockerimageReconciler, cmdimageReconciler, clusterReconciler, dockercomposeserviceReconciler, imagemapReconciler, dockercomposelogstreamReconciler, sessionReconciler)
   572  	controllerBuilder := controllers.NewControllerBuilder(tiltServerControllerManager, v)
   573  	v2 := provideClock()
   574  	renderer := hud.NewRenderer(v2)
   575  	openURL := _wireOpenURLValue
   576  	headsUpDisplay := hud.NewHud(renderer, webURL, analytics3, openURL)
   577  	stdout := hud.ProvideStdout()
   578  	incrementalPrinter := hud.NewIncrementalPrinter(stdout)
   579  	filterSource := provideLogSource()
   580  	filterResources := provideLogResources()
   581  	filterLevel := provideLogLevel()
   582  	logFilter := hud.NewLogFilter(filterSource, filterResources, filterLevel)
   583  	terminalStream := hud.NewTerminalStream(incrementalPrinter, logFilter, storeStore)
   584  	openInput := _wireOpenInputValue
   585  	terminalPrompt := prompt.NewTerminalPrompt(analytics3, openInput, openURL, stdout, webHost, webURL)
   586  	serviceWatcher := k8swatch.NewServiceWatcher(connectionManager, namespace)
   587  	imageBuildAndDeployer := buildcontrol.NewImageBuildAndDeployer(dockerimageReconciler, cmdimageReconciler, imageBuilder, analytics3, buildClock, deferredClient, kubernetesapplyReconciler)
   588  	dockerComposeBuildAndDeployer := buildcontrol.NewDockerComposeBuildAndDeployer(dockerimageReconciler, cmdimageReconciler, imageBuilder, dockercomposeserviceReconciler, buildClock, deferredClient)
   589  	localTargetBuildAndDeployer := buildcontrol.NewLocalTargetBuildAndDeployer(buildClock, deferredClient, cmdController)
   590  	buildOrder := engine.DefaultBuildOrder(imageBuildAndDeployer, dockerComposeBuildAndDeployer, localTargetBuildAndDeployer, updateMode)
   591  	spanCollector := tracer.NewSpanCollector(ctx)
   592  	traceTracer := tracer.InitOpenTelemetry(spanCollector)
   593  	compositeBuildAndDeployer := engine.NewCompositeBuildAndDeployer(buildOrder, traceTracer)
   594  	buildController := engine.NewBuildController(compositeBuildAndDeployer)
   595  	configsController := configs.NewConfigsController(deferredClient)
   596  	triggerQueueSubscriber := configs.NewTriggerQueueSubscriber(deferredClient)
   597  	analyticsReporter := analytics2.ProvideAnalyticsReporter(analytics3, storeStore, client, product, defaults)
   598  	cmdTags := _wireCmdTagsValue
   599  	analyticsUpdater := analytics2.NewAnalyticsUpdater(analytics3, cmdTags, engineMode)
   600  	eventWatchManager := k8swatch.NewEventWatchManager(connectionManager, namespace)
   601  	httpClient := cloud.ProvideHttpClient()
   602  	cloudStatusManager := cloud.NewStatusManager(httpClient, clock)
   603  	dockerPruner := dockerprune.NewDockerPruner(compositeClient)
   604  	telemetryController := telemetry.NewController(buildClock, spanCollector)
   605  	serverController := local.NewServerController(deferredClient)
   606  	podMonitor := k8srollout.NewPodMonitor(clock)
   607  	sessionController := session2.NewController(sessionReconciler)
   608  	subscriber := uisession2.NewSubscriber(deferredClient)
   609  	uiresourceSubscriber := uiresource2.NewSubscriber(deferredClient)
   610  	v3 := engine.ProvideSubscribers(headsUpServerController, tiltServerControllerManager, controllerBuilder, headsUpDisplay, terminalStream, terminalPrompt, serviceWatcher, buildController, configsController, triggerQueueSubscriber, analyticsReporter, analyticsUpdater, eventWatchManager, cloudStatusManager, dockerPruner, telemetryController, serverController, podMonitor, sessionController, subscriber, uiresourceSubscriber)
   611  	upper, err := engine.NewUpper(ctx, storeStore, v3)
   612  	if err != nil {
   613  		return CmdCIDeps{}, err
   614  	}
   615  	tokenToken, err := token.GetOrCreateToken(tiltDevDir)
   616  	if err != nil {
   617  		return CmdCIDeps{}, err
   618  	}
   619  	address := cloudurl.ProvideAddress()
   620  	snapshotter := cloud.NewSnapshotter(storeStore, deferredClient)
   621  	cmdCIDeps := CmdCIDeps{
   622  		Upper:        upper,
   623  		TiltBuild:    tiltBuild,
   624  		Token:        tokenToken,
   625  		CloudAddress: address,
   626  		Snapshotter:  snapshotter,
   627  	}
   628  	return cmdCIDeps, nil
   629  }
   630  
   631  var (
   632  	_wireStoreEngineModeValue = store.EngineModeCI
   633  	_wireCmdTagsValue         = analytics2.CmdTags(map[string]string{})
   634  )
   635  
   636  func wireCmdUpdog(ctx context.Context, analytics3 *analytics.TiltAnalytics, cmdTags analytics2.CmdTags, subcommand model.TiltSubcommand, objects []client.Object) (CmdUpdogDeps, error) {
   637  	reducer := _wireReducerValue
   638  	storeLogActionsFlag := provideLogActions()
   639  	storeStore := store.NewStore(reducer, storeLogActionsFlag)
   640  	tiltDevDir, err := dirs.UseTiltDevDir()
   641  	if err != nil {
   642  		return CmdUpdogDeps{}, err
   643  	}
   644  	configAccess := server.ProvideConfigAccess(tiltDevDir)
   645  	webPort := provideWebPort()
   646  	apiServerName := model.ProvideAPIServerName(webPort)
   647  	webHost := provideWebHost()
   648  	webListener, err := server.ProvideWebListener(webHost, webPort)
   649  	if err != nil {
   650  		return CmdUpdogDeps{}, err
   651  	}
   652  	tiltBuild := provideTiltInfo()
   653  	connProvider := server.ProvideDefaultConnProvider()
   654  	bearerToken, err := server.NewBearerToken()
   655  	if err != nil {
   656  		return CmdUpdogDeps{}, err
   657  	}
   658  	base := xdg.NewTiltDevBase()
   659  	generatableKeyCert, err := server.ProvideKeyCert(apiServerName, webHost, webPort, base)
   660  	if err != nil {
   661  		return CmdUpdogDeps{}, err
   662  	}
   663  	apiServerPort, err := server.ProvideAPIServerPort()
   664  	if err != nil {
   665  		return CmdUpdogDeps{}, err
   666  	}
   667  	apiserverConfig, err := server.ProvideTiltServerOptions(ctx, tiltBuild, connProvider, bearerToken, generatableKeyCert, apiServerPort)
   668  	if err != nil {
   669  		return CmdUpdogDeps{}, err
   670  	}
   671  	webMode, err := provideWebMode(tiltBuild)
   672  	if err != nil {
   673  		return CmdUpdogDeps{}, err
   674  	}
   675  	webVersion := provideWebVersion(tiltBuild)
   676  	assetsServer, err := provideAssetServer(webMode, webVersion)
   677  	if err != nil {
   678  		return CmdUpdogDeps{}, err
   679  	}
   680  	websocketList := server.NewWebsocketList()
   681  	deferredClient := controllers.ProvideDeferredClient()
   682  	headsUpServer, err := server.ProvideHeadsUpServer(ctx, storeStore, assetsServer, analytics3, websocketList, deferredClient)
   683  	if err != nil {
   684  		return CmdUpdogDeps{}, err
   685  	}
   686  	webURL, err := provideWebURL(webHost, webPort)
   687  	if err != nil {
   688  		return CmdUpdogDeps{}, err
   689  	}
   690  	headsUpServerController := server.ProvideHeadsUpServerController(configAccess, apiServerName, webListener, apiserverConfig, headsUpServer, assetsServer, webURL)
   691  	scheme := v1alpha1.NewScheme()
   692  	uncachedObjects := controllers.ProvideUncachedObjects()
   693  	tiltServerControllerManager, err := controllers.NewTiltServerControllerManager(apiserverConfig, scheme, deferredClient, uncachedObjects)
   694  	if err != nil {
   695  		return CmdUpdogDeps{}, err
   696  	}
   697  	watcherMaker := fsevent.ProvideWatcherMaker()
   698  	timerMaker := fsevent.ProvideTimerMaker()
   699  	clock := clockwork.NewRealClock()
   700  	controller := filewatch.NewController(deferredClient, storeStore, watcherMaker, timerMaker, scheme, clock)
   701  	fs := afero.NewOsFs()
   702  	writer := kubeconfig.NewWriter(base, fs, apiServerName)
   703  	k8sKubeContextOverride := ProvideKubeContextOverride()
   704  	k8sNamespaceOverride := ProvideNamespaceOverride()
   705  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   706  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   707  	kubeconfigPathOnce := k8s.ProvideDefaultLocalKubeconfigPath(ctx, writer, apiConfigOrError)
   708  	env := localexec.DefaultEnv(webPort, webHost, kubeconfigPathOnce)
   709  	execer := cmd.ProvideExecer(env)
   710  	proberManager := cmd.ProvideProberManager()
   711  	cmdController := cmd.NewController(ctx, execer, proberManager, deferredClient, storeStore, clock, scheme)
   712  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   713  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   714  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   715  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   716  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   717  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   718  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   719  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   720  	k8sClient := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   721  	podSource := podlogstream.NewPodSource(ctx, k8sClient, scheme, clock)
   722  	podlogstreamController := podlogstream.NewController(ctx, deferredClient, scheme, storeStore, k8sClient, podSource, clock)
   723  	connectionManager := cluster.NewConnectionManager()
   724  	containerRestartDetector := kubernetesdiscovery.NewContainerRestartDetector()
   725  	reconciler := kubernetesdiscovery.NewReconciler(deferredClient, scheme, connectionManager, containerRestartDetector, storeStore)
   726  	processExecer := localexec.NewProcessExecer(env)
   727  	kubernetesapplyReconciler := kubernetesapply.NewReconciler(deferredClient, k8sClient, scheme, storeStore, processExecer)
   728  	uisessionReconciler := uisession.NewReconciler(deferredClient, websocketList)
   729  	uiresourceReconciler := uiresource.NewReconciler(deferredClient, websocketList, storeStore)
   730  	uibuttonReconciler := uibutton.NewReconciler(deferredClient, websocketList, storeStore)
   731  	portforwardReconciler := portforward.NewReconciler(deferredClient, scheme, storeStore, connectionManager)
   732  	plugin := k8scontext.NewPlugin(kubeContext, namespace, product)
   733  	versionPlugin := version.NewPlugin(tiltBuild)
   734  	configPlugin := config.NewPlugin(subcommand)
   735  	extensionrepoReconciler, err := extensionrepo.NewReconciler(deferredClient, storeStore, base)
   736  	if err != nil {
   737  		return CmdUpdogDeps{}, err
   738  	}
   739  	extensionReconciler := extension.NewReconciler(deferredClient, scheme, analytics3)
   740  	tiltextensionPlugin := tiltextension.NewPlugin(extensionrepoReconciler, extensionReconciler)
   741  	ciTimeoutFlag := provideCITimeoutFlag()
   742  	cisettingsPlugin := cisettings.NewPlugin(ciTimeoutFlag)
   743  	realClientCreator := _wireRealClientCreatorValue
   744  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, k8sClient, minikubeClient)
   745  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   746  	dockerComposeClient := dockercompose.NewDockerComposeClient(localEnv)
   747  	defaults := _wireDefaultsValue
   748  	tiltfileLoader := tiltfile.ProvideTiltfileLoader(analytics3, plugin, versionPlugin, configPlugin, tiltextensionPlugin, cisettingsPlugin, dockerComposeClient, webHost, processExecer, defaults, product)
   749  	localClient := docker.ProvideLocalCli(ctx, localEnv)
   750  	clusterClient, err := docker.ProvideClusterCli(ctx, localEnv, clusterEnv, localClient)
   751  	if err != nil {
   752  		return CmdUpdogDeps{}, err
   753  	}
   754  	compositeClient := docker.ProvideSwitchCli(clusterClient, localClient)
   755  	engineMode := _wireEngineModeValue2
   756  	tiltfileReconciler := tiltfile2.NewReconciler(storeStore, tiltfileLoader, compositeClient, deferredClient, scheme, engineMode, k8sKubeContextOverride, k8sNamespaceOverride, ciTimeoutFlag)
   757  	togglebuttonReconciler := togglebutton.NewReconciler(deferredClient, scheme)
   758  	dockerUpdater := containerupdate.NewDockerUpdater(compositeClient)
   759  	execUpdater := containerupdate.NewExecUpdater(k8sClient)
   760  	liveupdatesUpdateModeFlag := provideUpdateModeFlag()
   761  	updateMode, err := liveupdates.ProvideUpdateMode(liveupdatesUpdateModeFlag, kubeContext, clusterEnv)
   762  	if err != nil {
   763  		return CmdUpdogDeps{}, err
   764  	}
   765  	liveupdateReconciler := liveupdate.NewReconciler(storeStore, dockerUpdater, execUpdater, updateMode, kubeContext, deferredClient, scheme)
   766  	configmapReconciler := configmap.NewReconciler(deferredClient, storeStore)
   767  	labels := _wireLabelsValue
   768  	dockerBuilder := build.NewDockerBuilder(compositeClient, labels)
   769  	buildClock := build.ProvideClock()
   770  	customBuilder := build.NewCustomBuilder(compositeClient, buildClock, cmdController)
   771  	kindLoader := build.NewKINDLoader()
   772  	imageBuilder := build.NewImageBuilder(dockerBuilder, customBuilder, kindLoader)
   773  	dockerimageReconciler := dockerimage.NewReconciler(deferredClient, storeStore, scheme, compositeClient, imageBuilder)
   774  	cmdimageReconciler := cmdimage.NewReconciler(deferredClient, storeStore, scheme, compositeClient, imageBuilder)
   775  	dockerClientFactory := _wireDockerClientFuncValue
   776  	kubernetesClientFactory := _wireKubernetesClientFuncValue
   777  	clusterReconciler := cluster.NewReconciler(ctx, deferredClient, storeStore, clock, connectionManager, localEnv, dockerClientFactory, kubernetesClientFactory, websocketList, writer, kubeconfigPathOnce)
   778  	disableSubscriber := dockercomposeservice.NewDisableSubscriber(ctx, dockerComposeClient, clock)
   779  	dockercomposeserviceReconciler := dockercomposeservice.NewReconciler(deferredClient, dockerComposeClient, compositeClient, storeStore, scheme, disableSubscriber)
   780  	imagemapReconciler := imagemap.NewReconciler(deferredClient, storeStore)
   781  	dockercomposelogstreamReconciler := dockercomposelogstream.NewReconciler(deferredClient, storeStore, dockerComposeClient, compositeClient)
   782  	sessionReconciler := session.NewReconciler(deferredClient, storeStore, clock)
   783  	v := controllers.ProvideControllers(controller, cmdController, podlogstreamController, reconciler, kubernetesapplyReconciler, uisessionReconciler, uiresourceReconciler, uibuttonReconciler, portforwardReconciler, tiltfileReconciler, togglebuttonReconciler, extensionReconciler, extensionrepoReconciler, liveupdateReconciler, configmapReconciler, dockerimageReconciler, cmdimageReconciler, clusterReconciler, dockercomposeserviceReconciler, imagemapReconciler, dockercomposelogstreamReconciler, sessionReconciler)
   784  	controllerBuilder := controllers.NewControllerBuilder(tiltServerControllerManager, v)
   785  	stdout := hud.ProvideStdout()
   786  	incrementalPrinter := hud.NewIncrementalPrinter(stdout)
   787  	filterSource := provideLogSource()
   788  	filterResources := provideLogResources()
   789  	filterLevel := provideLogLevel()
   790  	logFilter := hud.NewLogFilter(filterSource, filterResources, filterLevel)
   791  	terminalStream := hud.NewTerminalStream(incrementalPrinter, logFilter, storeStore)
   792  	cliUpdogSubscriber := provideUpdogSubscriber(objects, deferredClient)
   793  	v2 := provideUpdogCmdSubscribers(headsUpServerController, tiltServerControllerManager, controllerBuilder, terminalStream, cliUpdogSubscriber)
   794  	upper, err := engine.NewUpper(ctx, storeStore, v2)
   795  	if err != nil {
   796  		return CmdUpdogDeps{}, err
   797  	}
   798  	tokenToken, err := token.GetOrCreateToken(tiltDevDir)
   799  	if err != nil {
   800  		return CmdUpdogDeps{}, err
   801  	}
   802  	address := cloudurl.ProvideAddress()
   803  	cmdUpdogDeps := CmdUpdogDeps{
   804  		Upper:        upper,
   805  		TiltBuild:    tiltBuild,
   806  		Token:        tokenToken,
   807  		CloudAddress: address,
   808  		Store:        storeStore,
   809  	}
   810  	return cmdUpdogDeps, nil
   811  }
   812  
   813  var (
   814  	_wireEngineModeValue2 = store.EngineModeCI
   815  )
   816  
   817  func wireKubeContext(ctx context.Context) (k8s.KubeContext, error) {
   818  	k8sKubeContextOverride := ProvideKubeContextOverride()
   819  	k8sNamespaceOverride := ProvideNamespaceOverride()
   820  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   821  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   822  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   823  	return kubeContext, nil
   824  }
   825  
   826  func wireEnv(ctx context.Context) (clusterid.Product, error) {
   827  	k8sKubeContextOverride := ProvideKubeContextOverride()
   828  	k8sNamespaceOverride := ProvideNamespaceOverride()
   829  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   830  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   831  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   832  	return product, nil
   833  }
   834  
   835  func wireNamespace(ctx context.Context) (k8s.Namespace, error) {
   836  	k8sKubeContextOverride := ProvideKubeContextOverride()
   837  	k8sNamespaceOverride := ProvideNamespaceOverride()
   838  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   839  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   840  	return namespace, nil
   841  }
   842  
   843  func wireClusterName(ctx context.Context) (k8s.ClusterName, error) {
   844  	k8sKubeContextOverride := ProvideKubeContextOverride()
   845  	k8sNamespaceOverride := ProvideNamespaceOverride()
   846  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   847  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   848  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   849  	return clusterName, nil
   850  }
   851  
   852  func wireK8sClient(ctx context.Context) (k8s.Client, error) {
   853  	k8sKubeContextOverride := ProvideKubeContextOverride()
   854  	k8sNamespaceOverride := ProvideNamespaceOverride()
   855  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   856  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   857  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   858  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   859  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   860  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   861  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   862  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   863  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   864  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   865  	k8sClient := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   866  	return k8sClient, nil
   867  }
   868  
   869  func wireK8sVersion(ctx context.Context) (*version2.Info, error) {
   870  	k8sKubeContextOverride := ProvideKubeContextOverride()
   871  	k8sNamespaceOverride := ProvideNamespaceOverride()
   872  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   873  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   874  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   875  	info, err := k8s.ProvideServerVersion(clientsetOrError)
   876  	if err != nil {
   877  		return nil, err
   878  	}
   879  	return info, nil
   880  }
   881  
   882  func wireDockerClusterClient(ctx context.Context) (docker.ClusterClient, error) {
   883  	realClientCreator := _wireRealClientCreatorValue
   884  	k8sKubeContextOverride := ProvideKubeContextOverride()
   885  	k8sNamespaceOverride := ProvideNamespaceOverride()
   886  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   887  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   888  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   889  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   890  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   891  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   892  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   893  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   894  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   895  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   896  	k8sClient := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   897  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, k8sClient, minikubeClient)
   898  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   899  	localClient := docker.ProvideLocalCli(ctx, localEnv)
   900  	clusterClient, err := docker.ProvideClusterCli(ctx, localEnv, clusterEnv, localClient)
   901  	if err != nil {
   902  		return nil, err
   903  	}
   904  	return clusterClient, nil
   905  }
   906  
   907  func wireDockerLocalClient(ctx context.Context) (docker.LocalClient, error) {
   908  	realClientCreator := _wireRealClientCreatorValue
   909  	k8sKubeContextOverride := ProvideKubeContextOverride()
   910  	k8sNamespaceOverride := ProvideNamespaceOverride()
   911  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   912  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   913  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   914  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   915  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   916  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   917  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   918  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   919  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   920  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   921  	k8sClient := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   922  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, k8sClient, minikubeClient)
   923  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   924  	localClient := docker.ProvideLocalCli(ctx, localEnv)
   925  	return localClient, nil
   926  }
   927  
   928  func wireDockerCompositeClient(ctx context.Context) (docker.CompositeClient, error) {
   929  	realClientCreator := _wireRealClientCreatorValue
   930  	k8sKubeContextOverride := ProvideKubeContextOverride()
   931  	k8sNamespaceOverride := ProvideNamespaceOverride()
   932  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   933  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   934  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   935  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   936  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   937  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   938  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   939  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   940  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   941  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   942  	k8sClient := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   943  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, k8sClient, minikubeClient)
   944  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   945  	localClient := docker.ProvideLocalCli(ctx, localEnv)
   946  	clusterClient, err := docker.ProvideClusterCli(ctx, localEnv, clusterEnv, localClient)
   947  	if err != nil {
   948  		return nil, err
   949  	}
   950  	compositeClient := docker.ProvideSwitchCli(clusterClient, localClient)
   951  	return compositeClient, nil
   952  }
   953  
   954  func wireDownDeps(ctx context.Context, tiltAnalytics *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (DownDeps, error) {
   955  	k8sKubeContextOverride := ProvideKubeContextOverride()
   956  	k8sNamespaceOverride := ProvideNamespaceOverride()
   957  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
   958  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
   959  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
   960  	namespace := k8s.ProvideConfigNamespace(clientConfig)
   961  	product := k8s.ProvideClusterProduct(apiConfigOrError)
   962  	plugin := k8scontext.NewPlugin(kubeContext, namespace, product)
   963  	tiltBuild := provideTiltInfo()
   964  	versionPlugin := version.NewPlugin(tiltBuild)
   965  	configPlugin := config.NewPlugin(subcommand)
   966  	deferredClient := controllers.ProvideDeferredClient()
   967  	reducer := _wireReducerValue
   968  	storeLogActionsFlag := provideLogActions()
   969  	storeStore := store.NewStore(reducer, storeLogActionsFlag)
   970  	base := xdg.NewTiltDevBase()
   971  	reconciler, err := extensionrepo.NewReconciler(deferredClient, storeStore, base)
   972  	if err != nil {
   973  		return DownDeps{}, err
   974  	}
   975  	scheme := v1alpha1.NewScheme()
   976  	extensionReconciler := extension.NewReconciler(deferredClient, scheme, tiltAnalytics)
   977  	tiltextensionPlugin := tiltextension.NewPlugin(reconciler, extensionReconciler)
   978  	ciTimeoutFlag := provideCITimeoutFlag()
   979  	cisettingsPlugin := cisettings.NewPlugin(ciTimeoutFlag)
   980  	realClientCreator := _wireRealClientCreatorValue
   981  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
   982  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
   983  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
   984  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
   985  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
   986  	k8sClient := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
   987  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, k8sClient, minikubeClient)
   988  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
   989  	dockerComposeClient := dockercompose.NewDockerComposeClient(localEnv)
   990  	webHost := provideWebHost()
   991  	webPort := provideWebPort()
   992  	fs := afero.NewOsFs()
   993  	apiServerName := model.ProvideAPIServerName(webPort)
   994  	writer := kubeconfig.NewWriter(base, fs, apiServerName)
   995  	kubeconfigPathOnce := k8s.ProvideDefaultLocalKubeconfigPath(ctx, writer, apiConfigOrError)
   996  	env := localexec.DefaultEnv(webPort, webHost, kubeconfigPathOnce)
   997  	processExecer := localexec.NewProcessExecer(env)
   998  	defaults := _wireDefaultsValue
   999  	tiltfileLoader := tiltfile.ProvideTiltfileLoader(tiltAnalytics, plugin, versionPlugin, configPlugin, tiltextensionPlugin, cisettingsPlugin, dockerComposeClient, webHost, processExecer, defaults, product)
  1000  	downDeps := DownDeps{
  1001  		tfl:              tiltfileLoader,
  1002  		dcClient:         dockerComposeClient,
  1003  		kClient:          k8sClient,
  1004  		execer:           processExecer,
  1005  		kubeconfigWriter: writer,
  1006  		fs:               fs,
  1007  	}
  1008  	return downDeps, nil
  1009  }
  1010  
  1011  func wireLogsDeps(ctx context.Context, tiltAnalytics *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (LogsDeps, error) {
  1012  	webHost := provideWebHost()
  1013  	webPort := provideWebPort()
  1014  	webURL, err := provideWebURL(webHost, webPort)
  1015  	if err != nil {
  1016  		return LogsDeps{}, err
  1017  	}
  1018  	stdout := hud.ProvideStdout()
  1019  	incrementalPrinter := hud.NewIncrementalPrinter(stdout)
  1020  	filterSource := provideLogSource()
  1021  	filterResources := provideLogResources()
  1022  	filterLevel := provideLogLevel()
  1023  	logFilter := hud.NewLogFilter(filterSource, filterResources, filterLevel)
  1024  	logsDeps := LogsDeps{
  1025  		url:     webURL,
  1026  		printer: incrementalPrinter,
  1027  		filter:  logFilter,
  1028  	}
  1029  	return logsDeps, nil
  1030  }
  1031  
  1032  func wireDumpImageDeployRefDeps(ctx context.Context) (DumpImageDeployRefDeps, error) {
  1033  	realClientCreator := _wireRealClientCreatorValue
  1034  	k8sKubeContextOverride := ProvideKubeContextOverride()
  1035  	k8sNamespaceOverride := ProvideNamespaceOverride()
  1036  	clientConfig := k8s.ProvideClientConfig(k8sKubeContextOverride, k8sNamespaceOverride)
  1037  	apiConfigOrError := k8s.ProvideAPIConfig(clientConfig, k8sKubeContextOverride, k8sNamespaceOverride)
  1038  	kubeContext := k8s.ProvideKubeContext(apiConfigOrError)
  1039  	product := k8s.ProvideClusterProduct(apiConfigOrError)
  1040  	restConfigOrError := k8s.ProvideRESTConfig(clientConfig)
  1041  	clientsetOrError := k8s.ProvideClientset(restConfigOrError)
  1042  	portForwardClient := k8s.ProvidePortForwardClient(restConfigOrError, clientsetOrError)
  1043  	clusterName := k8s.ProvideClusterName(apiConfigOrError)
  1044  	namespace := k8s.ProvideConfigNamespace(clientConfig)
  1045  	minikubeClient := k8s.ProvideMinikubeClient(clusterName)
  1046  	k8sClient := k8s.ProvideK8sClient(ctx, product, restConfigOrError, clientsetOrError, portForwardClient, kubeContext, clusterName, namespace, minikubeClient, apiConfigOrError, clientConfig)
  1047  	clusterEnv := docker.ProvideClusterEnv(ctx, realClientCreator, kubeContext, product, k8sClient, minikubeClient)
  1048  	localEnv := docker.ProvideLocalEnv(ctx, realClientCreator, kubeContext, product, clusterEnv)
  1049  	localClient := docker.ProvideLocalCli(ctx, localEnv)
  1050  	clusterClient, err := docker.ProvideClusterCli(ctx, localEnv, clusterEnv, localClient)
  1051  	if err != nil {
  1052  		return DumpImageDeployRefDeps{}, err
  1053  	}
  1054  	compositeClient := docker.ProvideSwitchCli(clusterClient, localClient)
  1055  	labels := _wireLabelsValue
  1056  	dockerBuilder := build.NewDockerBuilder(compositeClient, labels)
  1057  	dumpImageDeployRefDeps := DumpImageDeployRefDeps{
  1058  		DockerBuilder: dockerBuilder,
  1059  		DockerClient:  compositeClient,
  1060  	}
  1061  	return dumpImageDeployRefDeps, nil
  1062  }
  1063  
  1064  func wireAnalytics(l logger.Logger, cmdName model.TiltSubcommand) (*analytics.TiltAnalytics, error) {
  1065  	tiltBuild := provideTiltInfo()
  1066  	gitRemote := git.ProvideGitRemote()
  1067  	tiltAnalytics, err := newAnalytics(l, cmdName, tiltBuild, gitRemote)
  1068  	if err != nil {
  1069  		return nil, err
  1070  	}
  1071  	return tiltAnalytics, nil
  1072  }
  1073  
  1074  func wireClientGetter(ctx context.Context) (*client2.Getter, error) {
  1075  	tiltDevDir, err := dirs.UseTiltDevDir()
  1076  	if err != nil {
  1077  		return nil, err
  1078  	}
  1079  	webPort := provideWebPort()
  1080  	apiServerName := model.ProvideAPIServerName(webPort)
  1081  	configAccess := server.ProvideConfigAccess(tiltDevDir)
  1082  	tiltClientConfig, err := client2.ProvideClientConfig(apiServerName, configAccess)
  1083  	if err != nil {
  1084  		return nil, err
  1085  	}
  1086  	getter := client2.NewGetter(tiltDevDir, tiltClientConfig)
  1087  	return getter, nil
  1088  }
  1089  
  1090  func wireLsp(ctx context.Context, l logger.Logger, subcommand model.TiltSubcommand) (cmdLspDeps, error) {
  1091  	deferredClient := controllers.ProvideDeferredClient()
  1092  	reducer := _wireReducerValue
  1093  	storeLogActionsFlag := provideLogActions()
  1094  	storeStore := store.NewStore(reducer, storeLogActionsFlag)
  1095  	base := xdg.NewTiltDevBase()
  1096  	reconciler, err := extensionrepo.NewReconciler(deferredClient, storeStore, base)
  1097  	if err != nil {
  1098  		return cmdLspDeps{}, err
  1099  	}
  1100  	scheme := v1alpha1.NewScheme()
  1101  	tiltBuild := provideTiltInfo()
  1102  	gitRemote := git.ProvideGitRemote()
  1103  	tiltAnalytics, err := newAnalytics(l, subcommand, tiltBuild, gitRemote)
  1104  	if err != nil {
  1105  		return cmdLspDeps{}, err
  1106  	}
  1107  	extensionReconciler := extension.NewReconciler(deferredClient, scheme, tiltAnalytics)
  1108  	cliCmdLspDeps := newLspDeps(reconciler, extensionReconciler, tiltAnalytics)
  1109  	return cliCmdLspDeps, nil
  1110  }
  1111  
  1112  // wire.go:
  1113  
  1114  var K8sWireSet = wire.NewSet(k8s.ProvideClusterProduct, k8s.ProvideClusterName, k8s.ProvideKubeContext, k8s.ProvideAPIConfig, k8s.ProvideClientConfig, k8s.ProvideClientset, k8s.ProvideRESTConfig, k8s.ProvidePortForwardClient, k8s.ProvideConfigNamespace, k8s.ProvideServerVersion, k8s.ProvideK8sClient, k8s.ProvideDefaultLocalKubeconfigPath, ProvideKubeContextOverride,
  1115  	ProvideNamespaceOverride)
  1116  
  1117  var BaseWireSet = wire.NewSet(
  1118  	K8sWireSet, tiltfile.WireSet, git.ProvideGitRemote, localexec.DefaultEnv, localexec.NewProcessExecer, wire.Bind(new(localexec.Execer), new(*localexec.ProcessExecer)), docker.SwitchWireSet, dockercompose.NewDockerComposeClient, clockwork.NewRealClock, engine.DeployerWireSet, engine.NewBuildController, local.NewServerController, kubernetesdiscovery.NewContainerRestartDetector, k8swatch.NewServiceWatcher, k8swatch.NewEventWatchManager, uisession2.NewSubscriber, uiresource2.NewSubscriber, configs.NewConfigsController, configs.NewTriggerQueueSubscriber, telemetry.NewController, cloud.WireSet, cloudurl.ProvideAddress, k8srollout.NewPodMonitor, telemetry.NewStartTracker, session2.NewController, build.ProvideClock, provideClock,
  1119  	provideLogSource,
  1120  	provideLogResources,
  1121  	provideLogLevel, hud.WireSet, prompt.WireSet, wire.Value(openurl.OpenURL(openurl.BrowserOpen)), provideLogActions, store.NewStore, wire.Bind(new(store.RStore), new(*store.Store)), wire.Bind(new(store.Dispatcher), new(*store.Store)), dockerprune.NewDockerPruner, provideTiltInfo, engine.NewUpper, analytics2.NewAnalyticsUpdater, analytics2.ProvideAnalyticsReporter, provideUpdateModeFlag, fsevent.ProvideWatcherMaker, fsevent.ProvideTimerMaker, controllers.WireSet, provideCITimeoutFlag,
  1122  	provideWebVersion,
  1123  	provideWebMode,
  1124  	provideWebURL,
  1125  	provideWebPort,
  1126  	provideWebHost, server.WireSet, server.ProvideDefaultConnProvider, provideAssetServer, tracer.NewSpanCollector, wire.Bind(new(trace.SpanExporter), new(*tracer.SpanCollector)), wire.Bind(new(tracer.SpanSource), new(*tracer.SpanCollector)), dirs.UseTiltDevDir, xdg.NewTiltDevBase, token.GetOrCreateToken, build.NewKINDLoader, wire.Value(feature.MainDefaults),
  1127  )
  1128  
  1129  var CLIClientWireSet = wire.NewSet(
  1130  	BaseWireSet, client2.WireSet,
  1131  )
  1132  
  1133  var UpWireSet = wire.NewSet(
  1134  	BaseWireSet, engine.ProvideSubscribers,
  1135  )
  1136  
  1137  type CmdUpDeps struct {
  1138  	Upper        engine.Upper
  1139  	TiltBuild    model.TiltBuild
  1140  	Token        token.Token
  1141  	CloudAddress cloudurl.Address
  1142  	Prompt       *prompt.TerminalPrompt
  1143  	Snapshotter  *cloud.Snapshotter
  1144  }
  1145  
  1146  type CmdCIDeps struct {
  1147  	Upper        engine.Upper
  1148  	TiltBuild    model.TiltBuild
  1149  	Token        token.Token
  1150  	CloudAddress cloudurl.Address
  1151  	Snapshotter  *cloud.Snapshotter
  1152  }
  1153  
  1154  type CmdUpdogDeps struct {
  1155  	Upper        engine.Upper
  1156  	TiltBuild    model.TiltBuild
  1157  	Token        token.Token
  1158  	CloudAddress cloudurl.Address
  1159  	Store        *store.Store
  1160  }
  1161  
  1162  type DownDeps struct {
  1163  	tfl              tiltfile.TiltfileLoader
  1164  	dcClient         dockercompose.DockerComposeClient
  1165  	kClient          k8s.Client
  1166  	execer           localexec.Execer
  1167  	kubeconfigWriter *kubeconfig.Writer
  1168  	fs               afero.Fs
  1169  }
  1170  
  1171  type LogsDeps struct {
  1172  	url     model.WebURL
  1173  	printer *hud.IncrementalPrinter
  1174  	filter  hud.LogFilter
  1175  }
  1176  
  1177  func provideClock() func() time.Time {
  1178  	return time.Now
  1179  }
  1180  
  1181  type DumpImageDeployRefDeps struct {
  1182  	DockerBuilder *build.DockerBuilder
  1183  	DockerClient  docker.Client
  1184  }
  1185  
  1186  func provideCITimeoutFlag() model.CITimeoutFlag {
  1187  	return model.CITimeoutFlag(ciTimeout)
  1188  }
  1189  
  1190  func provideLogSource() hud.FilterSource {
  1191  	return hud.FilterSource(logSourceFlag)
  1192  }
  1193  
  1194  func provideLogResources() hud.FilterResources {
  1195  	result := []model.ManifestName{}
  1196  	for _, r := range logResourcesFlag {
  1197  		result = append(result, model.ManifestName(r))
  1198  	}
  1199  	return hud.FilterResources(result)
  1200  }
  1201  
  1202  func provideLogLevel() hud.FilterLevel {
  1203  	switch logLevelFlag {
  1204  	case "warn", "WARN", "warning", "WARNING":
  1205  		return hud.FilterLevel(logger.WarnLvl)
  1206  	case "error", "ERROR":
  1207  		return hud.FilterLevel(logger.ErrorLvl)
  1208  	default:
  1209  		return hud.FilterLevel(logger.NoneLvl)
  1210  	}
  1211  }