diff --git a/cmd/build/cmd_project.go b/cmd/build/cmd_project.go index 8720486..9ac5990 100644 --- a/cmd/build/cmd_project.go +++ b/cmd/build/cmd_project.go @@ -33,6 +33,12 @@ func runProjectBuild(ctx context.Context, buildType string, ciMode bool, targets return coreerr.E("build.Run", "failed to get working directory", err) } + // PWA builds use the dedicated local web-app pipeline rather than the + // project-type builder registry. + if buildType == "pwa" { + return runLocalPwaBuild(ctx, projectDir) + } + // Load configuration from .core/build.yaml (or defaults) var buildConfig *build.BuildConfig if configPath != "" { @@ -50,6 +56,10 @@ func runProjectBuild(ctx context.Context, buildType string, ciMode bool, targets return coreerr.E("build.Run", "failed to load config", err) } + if buildConfig.Build.Type == "pwa" { + return runLocalPwaBuild(ctx, projectDir) + } + if err := build.SetupBuildCache(filesystem, projectDir, buildConfig); err != nil { return coreerr.E("build.Run", "failed to set up build cache", err) } diff --git a/cmd/build/cmd_project_test.go b/cmd/build/cmd_project_test.go index 0dc7bf4..8558293 100644 --- a/cmd/build/cmd_project_test.go +++ b/cmd/build/cmd_project_test.go @@ -162,3 +162,24 @@ func TestBuildCmd_selectOutputArtifacts_Good(t *testing.T) { assert.Equal(t, rawArtifacts, selected) }) } + +func TestBuildCmd_runProjectBuild_PwaOverride_Good(t *testing.T) { + expectedWD, err := ax.Getwd() + require.NoError(t, err) + + original := runLocalPwaBuild + t.Cleanup(func() { + runLocalPwaBuild = original + }) + + called := false + runLocalPwaBuild = func(ctx context.Context, projectDir string) error { + called = true + assert.Equal(t, expectedWD, projectDir) + return nil + } + + err = runProjectBuild(context.Background(), "pwa", false, "", "", false, false, "", "", false, "", false, false, false) + require.NoError(t, err) + assert.True(t, called) +} diff --git a/cmd/build/cmd_pwa.go b/cmd/build/cmd_pwa.go index d2fb365..c41c742 100644 --- a/cmd/build/cmd_pwa.go +++ b/cmd/build/cmd_pwa.go @@ -28,6 +28,10 @@ var ( errURLRequired = coreerr.E("buildcmd.Init", "the --url flag is required", nil) ) +// runLocalPwaBuild points at the local PWA build entrypoint. +// Tests replace this to avoid invoking the real build toolchain. +var runLocalPwaBuild = runBuild + // runPwaBuild downloads a PWA from URL and builds it. func runPwaBuild(ctx context.Context, pwaURL string) error { core.Print(nil, "%s %s", i18n.T("cmd.build.pwa.starting"), pwaURL)