diff --git a/generate/generate.go b/generate/generate.go index e5d3669..6128964 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -342,14 +342,15 @@ import ( ) type SecretStoreOptions struct { - ServiceName string - LookupEnv func(string) (string, bool) - KWalletAppID string - KWalletFolder string - BitwardenCommand string - BitwardenDebug bool - Shell string - ExecutableResolver fwsecretstore.ExecutableResolver + ServiceName string + LookupEnv func(string) (string, bool) + KWalletAppID string + KWalletFolder string + BitwardenCommand string + BitwardenDebug bool + DisableBitwardenCache bool + Shell string + ExecutableResolver fwsecretstore.ExecutableResolver } func OpenSecretStore(options SecretStoreOptions) (fwsecretstore.Store, error) { @@ -372,6 +373,7 @@ func secretStoreOpenOptions(options SecretStoreOptions) fwsecretstore.OpenFromMa KWalletFolder: options.KWalletFolder, BitwardenCommand: options.BitwardenCommand, BitwardenDebug: options.BitwardenDebug, + DisableBitwardenCache: options.DisableBitwardenCache, Shell: options.Shell, ManifestLoader: LoadManifest, ExecutableResolver: options.ExecutableResolver, @@ -386,6 +388,7 @@ func secretStoreDescribeOptions(options SecretStoreOptions) fwsecretstore.Descri KWalletFolder: options.KWalletFolder, BitwardenCommand: options.BitwardenCommand, BitwardenDebug: options.BitwardenDebug, + DisableBitwardenCache: options.DisableBitwardenCache, Shell: options.Shell, ManifestLoader: LoadManifest, ExecutableResolver: options.ExecutableResolver, diff --git a/generate/generate_test.go b/generate/generate_test.go index 1420809..e60de93 100644 --- a/generate/generate_test.go +++ b/generate/generate_test.go @@ -322,6 +322,33 @@ sources = ["flag", "env", "secret"] } } +func TestGenerateSecretStoreIncludesBitwardenCacheOption(t *testing.T) { + projectDir := newProject(t, ` +binary_name = "demo-mcp" + +[secret_store] +backend_policy = "bitwarden-cli" +`) + + if _, err := Generate(Options{ProjectDir: projectDir}); err != nil { + t.Fatalf("Generate returned error: %v", err) + } + + content, err := os.ReadFile(filepath.Join(projectDir, "mcpgen", "secretstore.go")) + if err != nil { + t.Fatalf("ReadFile generated secretstore: %v", err) + } + text := string(content) + for _, snippet := range []string{ + "DisableBitwardenCache bool", + "DisableBitwardenCache: options.DisableBitwardenCache,", + } { + if !strings.Contains(text, snippet) { + t.Fatalf("generated secretstore.go missing %q:\n%s", snippet, text) + } + } +} + func newProject(t *testing.T, manifest string) string { t.Helper()