diff --git a/cmd/dbc/completions/dbc.fish b/cmd/dbc/completions/dbc.fish index 3bebb347..57e029fd 100644 --- a/cmd/dbc/completions/dbc.fish +++ b/cmd/dbc/completions/dbc.fish @@ -75,7 +75,7 @@ complete -f -c dbc -n '__fish_dbc_using_subcommand search' -s h -d 'Help' complete -f -c dbc -n '__fish_dbc_using_subcommand search' -l help -d 'Help' complete -f -c dbc -n '__fish_dbc_using_subcommand search' -s v -d 'Verbose' complete -f -c dbc -n '__fish_dbc_using_subcommand search' -l json -d 'Print output as JSON instead of plaintext' -complete -f -c dbc -n '__fish_dbc_using_subcommand search' -l pre -d 'Include pre-release drivers and versions (hidden by default)' +complete -f -c dbc -n '__fish_dbc_using_subcommand search' -l pre -d 'Include pre-release drivers and versions (hidden by default unless already installed)' # remove subcommand complete -f -c dbc -n '__fish_dbc_using_subcommand remove' -s h -d 'Help' diff --git a/cmd/dbc/completions/dbc.zsh b/cmd/dbc/completions/dbc.zsh index 058e8d51..1446bccb 100644 --- a/cmd/dbc/completions/dbc.zsh +++ b/cmd/dbc/completions/dbc.zsh @@ -124,7 +124,7 @@ function _dbc_search_completions { '(-h)--help[Help]' \ '-v[verbose]' \ '--json[Print output as JSON instead of plaintext]' \ - '--pre[Include pre-release drivers and versions (hidden by default)]' \ + '--pre[Include pre-release drivers and versions (hidden by default unless already installed)]' \ ':search term: ' } diff --git a/cmd/dbc/search.go b/cmd/dbc/search.go index 939d710f..bf0a10a0 100644 --- a/cmd/dbc/search.go +++ b/cmd/dbc/search.go @@ -40,7 +40,7 @@ type SearchCmd struct { Verbose bool `arg:"-v" help:"Enable verbose output"` Json bool `help:"Print output as JSON instead of plaintext"` Pattern *regexp.Regexp `arg:"positional" help:"Pattern to search for"` - Pre bool `arg:"--pre" help:"Include pre-release drivers and versions (hidden by default)"` + Pre bool `arg:"--pre" help:"Include pre-release drivers and versions (hidden by default unless already installed)"` } func (s SearchCmd) GetModelCustom(baseModel baseModel) tea.Model { diff --git a/cmd/dbc/search_test.go b/cmd/dbc/search_test.go index d9ed332b..f0376d2c 100644 --- a/cmd/dbc/search_test.go +++ b/cmd/dbc/search_test.go @@ -210,6 +210,75 @@ func (suite *SubcommandTestSuite) TestSearchCmdWithInstalledPre() { "test-driver-docs-url This is manifest-only with its docs_url key set ", suite.runCmd(m)) } +func (suite *SubcommandTestSuite) TestSearchCmdVerboseWithInstalledPre() { + searchModel := SearchCmd{Verbose: true}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + before := suite.runCmd(searchModel) + suite.NotContains(before, "test-driver-only-pre") + + m := InstallCmd{Driver: "test-driver-only-pre", Level: config.ConfigEnv, Pre: true}. + GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) + suite.runCmd(m) + + searchModel = SearchCmd{Verbose: true}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + after := suite.runCmd(searchModel) + + suite.Contains(after, "test-driver-only-pre") + suite.Contains(after, "Test Driver Only Prerelease") + suite.Contains(after, "Installed Versions:") + suite.Contains(after, "0.9.0-alpha.1") + suite.Contains(after, "test-driver-1") + suite.Contains(after, "test-driver-2") +} + +func (suite *SubcommandTestSuite) TestSearchCmdNonVerboseWithInstalledPre() { + searchModel := SearchCmd{}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + before := suite.runCmd(searchModel) + suite.NotContains(before, "test-driver-only-pre") + + m := InstallCmd{Driver: "test-driver-only-pre", Level: config.ConfigEnv, Pre: true}. + GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) + suite.runCmd(m) + + searchModel = SearchCmd{}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + after := suite.runCmd(searchModel) + + suite.Contains(after, "test-driver-only-pre") + suite.Contains(after, "[installed: env=>0.9.0-alpha.1]") + suite.Contains(after, "test-driver-1") + suite.Contains(after, "test-driver-2") +} + +func (suite *SubcommandTestSuite) TestSearchCmdWithInstalledPreJSON() { + searchModel := SearchCmd{Json: true}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + before := suite.runCmd(searchModel) + suite.NotContains(before, `"test-driver-only-pre"`) + + m := InstallCmd{Driver: "test-driver-only-pre", Level: config.ConfigEnv, Pre: true}. + GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) + suite.runCmd(m) + + searchModel = SearchCmd{Json: true}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + after := suite.runCmd(searchModel) + + suite.Contains(after, `"test-driver-only-pre"`) + suite.Contains(after, `"installed"`) + suite.Contains(after, `0.9.0-alpha.1`) + suite.Contains(after, `"test-driver-1"`) + suite.Contains(after, `"test-driver-2"`) +} + func (suite *SubcommandTestSuite) TestSearchCmdPartialRegistryFailure() { // Test that search command handles partial registry failure gracefully // (one registry succeeds, another fails - returns both drivers and error) diff --git a/docs/guides/finding_drivers.md b/docs/guides/finding_drivers.md index 96a9a703..69f61bc8 100644 --- a/docs/guides/finding_drivers.md +++ b/docs/guides/finding_drivers.md @@ -208,7 +208,7 @@ $ dbc search --pre Without `--pre`, `dbc search` will: -- Hide drivers that have exclusively pre-release versions (no stable versions) +- Hide drivers that have exclusively pre-release versions (no stable versions), unless the driver is already installed - Exclude pre-release versions from the available versions list With `--pre`, `dbc search` will: diff --git a/docs/reference/cli.md b/docs/reference/cli.md index 70c70756..5652c7e3 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -73,7 +73,7 @@ $ dbc search [PATTERN] `--pre` {{ since_version('v0.2.0') }} -: Include pre-release drivers and versions (hidden by default) +: Include pre-release drivers and versions (hidden by default unless already installed) `--verbose`, `-v`