Default to cached state for the bundle run command

This commit is contained in:
Lennart Kats 2024-08-24 21:09:58 +02:00
parent 84b47745e4
commit cff5b92ad8
No known key found for this signature in database
GPG Key ID: 1EB8B57673197023
1 changed files with 26 additions and 7 deletions

View File

@ -2,7 +2,10 @@ package bundle
import ( import (
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"os"
"path/filepath"
"github.com/databricks/cli/bundle" "github.com/databricks/cli/bundle"
"github.com/databricks/cli/bundle/deploy/terraform" "github.com/databricks/cli/bundle/deploy/terraform"
@ -40,6 +43,9 @@ task or a Python wheel task, the second example applies.
`, `,
} }
var forcePull bool
cmd.Flags().BoolVar(&forcePull, "force-pull", false, "Skip local cache and load the state from the remote workspace")
var runOptions run.Options var runOptions run.Options
runOptions.Define(cmd) runOptions.Define(cmd)
@ -55,16 +61,29 @@ task or a Python wheel task, the second example applies.
return diags.Error() return diags.Error()
} }
diags = bundle.Apply(ctx, b, phases.Initialize())
if err := diags.Error(); err != nil {
return err
}
cacheDir, err := terraform.Dir(ctx, b)
if err != nil {
return err
}
_, stateFileErr := os.Stat(filepath.Join(cacheDir, terraform.TerraformStateFileName))
_, configFileErr := os.Stat(filepath.Join(cacheDir, terraform.TerraformConfigFileName))
noCache := errors.Is(stateFileErr, os.ErrNotExist) || errors.Is(configFileErr, os.ErrNotExist)
if forcePull || noCache {
diags = bundle.Apply(ctx, b, bundle.Seq( diags = bundle.Apply(ctx, b, bundle.Seq(
phases.Initialize(), terraform.StatePull(),
terraform.Interpolate(), terraform.Interpolate(),
terraform.Write(), terraform.Write(),
terraform.StatePull(),
terraform.Load(terraform.ErrorOnEmptyState),
)) ))
if err := diags.Error(); err != nil { if err := diags.Error(); err != nil {
return err return err
} }
}
// If no arguments are specified, prompt the user to select something to run. // If no arguments are specified, prompt the user to select something to run.
if len(args) == 0 && cmdio.IsPromptSupported(ctx) { if len(args) == 0 && cmdio.IsPromptSupported(ctx) {