Skip to content
This repository was archived by the owner on Aug 17, 2025. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions cmd/ftl/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"github.com/block/ftl/backend/protos/xyz/block/ftl/v1/ftlv1connect"
"github.com/block/ftl/common/log"
"github.com/block/ftl/internal"
"github.com/block/ftl/internal/buildengine"
"github.com/block/ftl/internal/buildengine/languageplugin"
"github.com/block/ftl/internal/config"
"github.com/block/ftl/internal/editor"
Expand Down Expand Up @@ -278,6 +279,12 @@ func makeBindContext(logger *log.Logger, cancel context.CancelCauseFunc, csm *cu
return schemaeventsource.New(ctx, "cli", adminClient), nil
})
kctx.FatalIfErrorf(err)

err = kctx.BindToProvider(func(adminClient adminpbconnect.AdminServiceClient) (buildengine.AdminClient, error) {
return adminClient, nil
})
kctx.FatalIfErrorf(err)

kongcompletion.Register(kctx.Kong, kongcompletion.WithPredictors(terminal.Predictors(func() schemaeventsource.View {
ac := rpc.Dial(adminpbconnect.NewAdminServiceClient, cli.AdminEndpoint.String(), log.Error)
return schemaeventsource.New(ctx, "terminal-predicators", ac).ViewOnly()
Expand Down
18 changes: 6 additions & 12 deletions cmd/ftl/cmd_build.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import (

errors "github.com/alecthomas/errors"

"github.com/block/ftl/backend/protos/xyz/block/ftl/admin/v1/adminpbconnect"
"github.com/block/ftl/common/log"
"github.com/block/ftl/internal/buildengine"
"github.com/block/ftl/internal/projectconfig"
"github.com/block/ftl/internal/schema/schemaeventsource"
Expand All @@ -20,11 +18,10 @@ type buildCmd struct {

func (b *buildCmd) Run(
ctx context.Context,
adminClient adminpbconnect.AdminServiceClient,
adminClient buildengine.AdminClient,
schemaSource *schemaeventsource.EventSource,
projConfig projectconfig.Config,
) error {
logger := log.FromContext(ctx)
if len(b.Dirs) == 0 {
b.Dirs = projConfig.AbsModuleDirs()
}
Expand All @@ -35,24 +32,21 @@ func (b *buildCmd) Run(
// Cancel build engine context to ensure all language plugins are killed.
ctx, cancel := context.WithCancelCause(ctx)
defer cancel(errors.Wrap(context.Canceled, "build stopped"))
engine, err := buildengine.New(
engine, err := buildengine.NewV2(
ctx,
adminClient,
schemaSource,
projConfig,
b.Dirs,
false,
buildengine.BuildEnv(b.BuildEnv),
buildengine.Parallelism(b.Parallelism),
buildengine.BuildEnvV2(b.BuildEnv),
buildengine.ParallelismV2(b.Parallelism),
)
if err != nil {
return errors.WithStack(err)
}
if len(engine.Modules()) == 0 {
logger.Warnf("No modules were found to build")
return nil
}
if err := engine.Build(ctx); err != nil {

if err := engine.BuildV2(ctx, false, false); err != nil {
return errors.Wrap(err, "build failed")
}
return nil
Expand Down
16 changes: 4 additions & 12 deletions cmd/ftl/cmd_deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"github.com/alecthomas/types/optional"

"github.com/block/ftl/backend/protos/xyz/block/ftl/admin/v1/adminpbconnect"
"github.com/block/ftl/common/log"
"github.com/block/ftl/internal/buildengine"
"github.com/block/ftl/internal/projectconfig"
"github.com/block/ftl/internal/schema/schemaeventsource"
Expand All @@ -28,8 +27,6 @@ func (d *deployCmd) Run(
adminClient adminpbconnect.AdminServiceClient,
schemaSource *schemaeventsource.EventSource,
) error {
logger := log.FromContext(ctx)

if !schemaSource.WaitForInitialSync(ctx) {
return errors.Errorf("timed out waiting for schema sync from server")
}
Expand All @@ -43,23 +40,18 @@ func (d *deployCmd) Run(
ctx, cancel = context.WithCancelCause(ctx)
defer cancel(errors.Wrap(context.Canceled, "stopping deploy"))
}
engine, err := buildengine.New(
engine, err := buildengine.NewV2(
ctx, adminClient, schemaSource, projConfig, d.Build.Dirs, true,
buildengine.BuildEnv(d.Build.BuildEnv),
buildengine.Parallelism(d.Build.Parallelism),
buildengine.BuildEnvV2(d.Build.BuildEnv),
buildengine.ParallelismV2(d.Build.Parallelism),
)
if err != nil {
return errors.WithStack(err)
}
if len(engine.Modules()) == 0 {
logger.Warnf("No modules were found to deploy")
return nil
}
err = engine.BuildAndDeploy(ctx, d.Replicas, !d.NoWait, true)
err = engine.BuildV2(ctx, true, !d.NoWait)
if err != nil {
return errors.Wrap(err, "failed to deploy")
}
logger.Infof("Deployed modules %v", engine.Modules()) //nolint
terminal.FromContext(ctx).Close()
return nil
}
Loading
Loading