github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/cli/wire.go (about) 1 //go:build wireinject 2 // +build wireinject 3 4 // The build tag makes sure the stub is not built in the final build. 5 6 package cli 7 8 import ( 9 "context" 10 "time" 11 12 "github.com/tilt-dev/clusterid" 13 cliclient "github.com/tilt-dev/tilt/internal/cli/client" 14 "github.com/tilt-dev/tilt/internal/controllers/core/filewatch/fsevent" 15 16 "github.com/google/wire" 17 "github.com/jonboulle/clockwork" 18 sdktrace "go.opentelemetry.io/otel/sdk/trace" 19 "k8s.io/apimachinery/pkg/version" 20 ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" 21 22 "github.com/tilt-dev/wmclient/pkg/dirs" 23 24 "github.com/tilt-dev/tilt/internal/analytics" 25 tiltanalytics "github.com/tilt-dev/tilt/internal/analytics" 26 "github.com/tilt-dev/tilt/internal/build" 27 "github.com/tilt-dev/tilt/internal/cloud" 28 "github.com/tilt-dev/tilt/internal/cloud/cloudurl" 29 "github.com/tilt-dev/tilt/internal/controllers" 30 "github.com/tilt-dev/tilt/internal/controllers/core/kubernetesdiscovery" 31 "github.com/tilt-dev/tilt/internal/docker" 32 "github.com/tilt-dev/tilt/internal/dockercompose" 33 "github.com/tilt-dev/tilt/internal/engine" 34 engineanalytics "github.com/tilt-dev/tilt/internal/engine/analytics" 35 "github.com/tilt-dev/tilt/internal/engine/configs" 36 "github.com/tilt-dev/tilt/internal/engine/dockerprune" 37 "github.com/tilt-dev/tilt/internal/engine/k8srollout" 38 "github.com/tilt-dev/tilt/internal/engine/k8swatch" 39 "github.com/tilt-dev/tilt/internal/engine/local" 40 "github.com/tilt-dev/tilt/internal/engine/session" 41 "github.com/tilt-dev/tilt/internal/engine/telemetry" 42 "github.com/tilt-dev/tilt/internal/engine/uiresource" 43 "github.com/tilt-dev/tilt/internal/engine/uisession" 44 "github.com/tilt-dev/tilt/internal/feature" 45 "github.com/tilt-dev/tilt/internal/git" 46 "github.com/tilt-dev/tilt/internal/hud" 47 "github.com/tilt-dev/tilt/internal/hud/prompt" 48 "github.com/tilt-dev/tilt/internal/hud/server" 49 "github.com/tilt-dev/tilt/internal/k8s" 50 "github.com/tilt-dev/tilt/internal/localexec" 51 "github.com/tilt-dev/tilt/internal/openurl" 52 "github.com/tilt-dev/tilt/internal/store" 53 "github.com/tilt-dev/tilt/internal/tiltfile" 54 "github.com/tilt-dev/tilt/internal/token" 55 "github.com/tilt-dev/tilt/internal/tracer" 56 "github.com/tilt-dev/tilt/internal/xdg" 57 "github.com/tilt-dev/tilt/pkg/logger" 58 "github.com/tilt-dev/tilt/pkg/model" 59 ) 60 61 var K8sWireSet = wire.NewSet( 62 k8s.ProvideClusterProduct, 63 k8s.ProvideClusterName, 64 k8s.ProvideKubeContext, 65 k8s.ProvideAPIConfig, 66 k8s.ProvideClientConfig, 67 k8s.ProvideClientset, 68 k8s.ProvideRESTConfig, 69 k8s.ProvidePortForwardClient, 70 k8s.ProvideConfigNamespace, 71 k8s.ProvideServerVersion, 72 k8s.ProvideK8sClient, 73 ProvideKubeContextOverride, 74 ProvideNamespaceOverride) 75 76 var BaseWireSet = wire.NewSet( 77 K8sWireSet, 78 tiltfile.WireSet, 79 git.ProvideGitRemote, 80 81 localexec.DefaultEnv, 82 localexec.NewProcessExecer, 83 wire.Bind(new(localexec.Execer), new(*localexec.ProcessExecer)), 84 85 docker.SwitchWireSet, 86 87 dockercompose.NewDockerComposeClient, 88 89 clockwork.NewRealClock, 90 engine.DeployerWireSet, 91 engine.NewBuildController, 92 local.NewServerController, 93 kubernetesdiscovery.NewContainerRestartDetector, 94 k8swatch.NewServiceWatcher, 95 k8swatch.NewEventWatchManager, 96 uisession.NewSubscriber, 97 uiresource.NewSubscriber, 98 configs.NewConfigsController, 99 configs.NewTriggerQueueSubscriber, 100 telemetry.NewController, 101 cloud.WireSet, 102 cloudurl.ProvideAddress, 103 k8srollout.NewPodMonitor, 104 telemetry.NewStartTracker, 105 session.NewController, 106 107 build.ProvideClock, 108 provideClock, 109 hud.WireSet, 110 prompt.WireSet, 111 wire.Value(openurl.OpenURL(openurl.BrowserOpen)), 112 113 provideLogActions, 114 store.NewStore, 115 wire.Bind(new(store.RStore), new(*store.Store)), 116 wire.Bind(new(store.Dispatcher), new(*store.Store)), 117 118 dockerprune.NewDockerPruner, 119 120 provideTiltInfo, 121 engine.NewUpper, 122 engineanalytics.NewAnalyticsUpdater, 123 engineanalytics.ProvideAnalyticsReporter, 124 provideUpdateModeFlag, 125 fsevent.ProvideWatcherMaker, 126 fsevent.ProvideTimerMaker, 127 128 controllers.WireSet, 129 130 provideCITimeoutFlag, 131 provideWebVersion, 132 provideWebMode, 133 provideWebURL, 134 provideWebPort, 135 provideWebHost, 136 server.WireSet, 137 server.ProvideDefaultConnProvider, 138 provideAssetServer, 139 140 tracer.NewSpanCollector, 141 wire.Bind(new(sdktrace.SpanExporter), new(*tracer.SpanCollector)), 142 wire.Bind(new(tracer.SpanSource), new(*tracer.SpanCollector)), 143 144 dirs.UseTiltDevDir, 145 xdg.NewTiltDevBase, 146 token.GetOrCreateToken, 147 148 build.NewKINDLoader, 149 150 wire.Value(feature.MainDefaults), 151 ) 152 153 var CLIClientWireSet = wire.NewSet( 154 BaseWireSet, 155 cliclient.WireSet, 156 ) 157 158 var UpWireSet = wire.NewSet( 159 BaseWireSet, 160 engine.ProvideSubscribers, 161 ) 162 163 func wireTiltfileResult(ctx context.Context, analytics *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (cmdTiltfileResultDeps, error) { 164 wire.Build(UpWireSet, newTiltfileResultDeps) 165 return cmdTiltfileResultDeps{}, nil 166 } 167 168 func wireDockerPrune(ctx context.Context, analytics *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (dpDeps, error) { 169 wire.Build(UpWireSet, newDPDeps) 170 return dpDeps{}, nil 171 } 172 173 func wireCmdUp(ctx context.Context, analytics *analytics.TiltAnalytics, cmdTags engineanalytics.CmdTags, subcommand model.TiltSubcommand) (CmdUpDeps, error) { 174 wire.Build(UpWireSet, 175 cloud.NewSnapshotter, 176 wire.Value(store.EngineModeUp), 177 wire.Struct(new(CmdUpDeps), "*")) 178 return CmdUpDeps{}, nil 179 } 180 181 type CmdUpDeps struct { 182 Upper engine.Upper 183 TiltBuild model.TiltBuild 184 Token token.Token 185 CloudAddress cloudurl.Address 186 Prompt *prompt.TerminalPrompt 187 Snapshotter *cloud.Snapshotter 188 } 189 190 func wireCmdCI(ctx context.Context, analytics *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (CmdCIDeps, error) { 191 wire.Build(UpWireSet, 192 cloud.NewSnapshotter, 193 wire.Value(store.EngineModeCI), 194 wire.Value(engineanalytics.CmdTags(map[string]string{})), 195 wire.Struct(new(CmdCIDeps), "*"), 196 ) 197 return CmdCIDeps{}, nil 198 } 199 200 type CmdCIDeps struct { 201 Upper engine.Upper 202 TiltBuild model.TiltBuild 203 Token token.Token 204 CloudAddress cloudurl.Address 205 Snapshotter *cloud.Snapshotter 206 } 207 208 func wireCmdUpdog(ctx context.Context, 209 analytics *analytics.TiltAnalytics, 210 cmdTags engineanalytics.CmdTags, 211 subcommand model.TiltSubcommand, 212 objects []ctrlclient.Object) (CmdUpdogDeps, error) { 213 wire.Build(BaseWireSet, 214 provideUpdogSubscriber, 215 provideUpdogCmdSubscribers, 216 wire.Value(store.EngineModeCI), 217 wire.Struct(new(CmdUpdogDeps), "*")) 218 return CmdUpdogDeps{}, nil 219 } 220 221 type CmdUpdogDeps struct { 222 Upper engine.Upper 223 TiltBuild model.TiltBuild 224 Token token.Token 225 CloudAddress cloudurl.Address 226 Store *store.Store 227 } 228 229 func wireKubeContext(ctx context.Context) (k8s.KubeContext, error) { 230 wire.Build(K8sWireSet) 231 return "", nil 232 } 233 234 func wireEnv(ctx context.Context) (clusterid.Product, error) { 235 wire.Build(K8sWireSet) 236 return "", nil 237 } 238 239 func wireNamespace(ctx context.Context) (k8s.Namespace, error) { 240 wire.Build(K8sWireSet) 241 return "", nil 242 } 243 244 func wireClusterName(ctx context.Context) (k8s.ClusterName, error) { 245 wire.Build(K8sWireSet) 246 return "", nil 247 } 248 249 func wireK8sClient(ctx context.Context) (k8s.Client, error) { 250 wire.Build( 251 K8sWireSet, 252 k8s.ProvideMinikubeClient, 253 ) 254 return nil, nil 255 } 256 257 func wireK8sVersion(ctx context.Context) (*version.Info, error) { 258 wire.Build(K8sWireSet) 259 return nil, nil 260 } 261 262 func wireDockerClusterClient(ctx context.Context) (docker.ClusterClient, error) { 263 wire.Build(UpWireSet) 264 return nil, nil 265 } 266 267 func wireDockerLocalClient(ctx context.Context) (docker.LocalClient, error) { 268 wire.Build(UpWireSet) 269 return nil, nil 270 } 271 272 func wireDockerCompositeClient(ctx context.Context) (docker.CompositeClient, error) { 273 wire.Build(UpWireSet) 274 return nil, nil 275 } 276 277 func wireDownDeps(ctx context.Context, tiltAnalytics *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (DownDeps, error) { 278 wire.Build(UpWireSet, ProvideDownDeps) 279 return DownDeps{}, nil 280 } 281 282 type DownDeps struct { 283 tfl tiltfile.TiltfileLoader 284 dcClient dockercompose.DockerComposeClient 285 kClient k8s.Client 286 execer localexec.Execer 287 } 288 289 func ProvideDownDeps( 290 tfl tiltfile.TiltfileLoader, 291 dcClient dockercompose.DockerComposeClient, 292 kClient k8s.Client, 293 execer localexec.Execer) DownDeps { 294 return DownDeps{ 295 tfl: tfl, 296 dcClient: dcClient, 297 kClient: kClient, 298 execer: execer, 299 } 300 } 301 302 func wireLogsDeps(ctx context.Context, tiltAnalytics *analytics.TiltAnalytics, subcommand model.TiltSubcommand) (LogsDeps, error) { 303 wire.Build(UpWireSet, ProvideLogsDeps) 304 return LogsDeps{}, nil 305 } 306 307 type LogsDeps struct { 308 url model.WebURL 309 printer *hud.IncrementalPrinter 310 } 311 312 func ProvideLogsDeps(u model.WebURL, p *hud.IncrementalPrinter) LogsDeps { 313 return LogsDeps{ 314 url: u, 315 printer: p, 316 } 317 } 318 319 func provideClock() func() time.Time { 320 return time.Now 321 } 322 323 type DumpImageDeployRefDeps struct { 324 DockerBuilder *build.DockerBuilder 325 DockerClient docker.Client 326 } 327 328 func wireDumpImageDeployRefDeps(ctx context.Context) (DumpImageDeployRefDeps, error) { 329 wire.Build(UpWireSet, 330 wire.Struct(new(DumpImageDeployRefDeps), "*")) 331 return DumpImageDeployRefDeps{}, nil 332 } 333 334 func wireAnalytics(l logger.Logger, cmdName model.TiltSubcommand) (*tiltanalytics.TiltAnalytics, error) { 335 wire.Build(UpWireSet, 336 newAnalytics) 337 return nil, nil 338 } 339 340 func wireClientGetter(ctx context.Context) (*cliclient.Getter, error) { 341 wire.Build(CLIClientWireSet) 342 return nil, nil 343 } 344 345 func wireLsp(ctx context.Context, l logger.Logger, subcommand model.TiltSubcommand) (cmdLspDeps, error) { 346 wire.Build(UpWireSet, newLspDeps, newAnalytics) 347 return cmdLspDeps{}, nil 348 } 349 350 func provideCITimeoutFlag() model.CITimeoutFlag { 351 return model.CITimeoutFlag(ciTimeout) 352 }