Skip to content

Commit f0a4bae

Browse files
committed
fix: improve install error when pre-release driver already installed (#340)
1 parent 504a9d8 commit f0a4bae

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

cmd/dbc/install.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,13 @@ func (m progressiveInstallModel) searchForDriver(list []dbc.Driver) (tea.Model,
288288

289289
pkg, err := d.GetPackage(nil, config.PlatformTuple(), m.Pre)
290290
if err != nil {
291+
if !m.Pre && !d.HasNonPrerelease() {
292+
for _, cfg := range config.Get() {
293+
if di, ok := cfg.Drivers[driverName]; ok && di.Version != nil && di.Version.Prerelease() != "" {
294+
return fmt.Errorf("driver `%s` is already installed (version %s); only pre-release versions are available for this driver; to update, use: dbc install --pre %s", driverName, di.Version, driverName)
295+
}
296+
}
297+
}
291298
return err
292299
}
293300

cmd/dbc/install_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,21 @@ func (suite *SubcommandTestSuite) TestInstallWithoutPreOnlyPrereleaseDriver() {
351351
suite.driverIsNotInstalled("test-driver-only-pre")
352352
}
353353

354+
func (suite *SubcommandTestSuite) TestInstallWithoutPreWhenPrereleaseAlreadyInstalled() {
355+
m := InstallCmd{Driver: "test-driver-only-pre", Level: suite.configLevel, Pre: true}.
356+
GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg})
357+
suite.runCmd(m)
358+
suite.driverIsInstalled("test-driver-only-pre", false)
359+
360+
m = InstallCmd{Driver: "test-driver-only-pre", Level: suite.configLevel, Pre: false}.
361+
GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg})
362+
out := suite.runCmdErr(m)
363+
364+
suite.Contains(out, "already installed")
365+
suite.Contains(out, "0.9.0-alpha.1")
366+
suite.Contains(out, "dbc install --pre test-driver-only-pre")
367+
}
368+
354369
func (suite *SubcommandTestSuite) TestInstallExplicitPrereleaseWithoutPreFlag() {
355370
// Install explicit prerelease version WITHOUT --pre flag, should succeed per requirement
356371
m := InstallCmd{Driver: "test-driver-only-pre=0.9.0-alpha.1", Level: suite.configLevel, Pre: false}.

0 commit comments

Comments
 (0)