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  }