From 7a352489de0aea4367f1258e6a98dbffac3c3627 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Wed, 21 Jan 2026 15:02:44 -0500 Subject: [PATCH 1/2] feat: notify user their version of dbc is out of date --- cmd/dbc/main.go | 9 +++++++++ drivers.go | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/cmd/dbc/main.go b/cmd/dbc/main.go index 45117db..0a28836 100644 --- a/cmd/dbc/main.go +++ b/cmd/dbc/main.go @@ -20,6 +20,7 @@ import ( "os" "slices" + "github.com/Masterminds/semver/v3" "github.com/alexflint/go-arg" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" @@ -226,6 +227,14 @@ func main() { prog = tea.NewProgram(m) } + latestVer, err := dbc.GetLatestDbcVersion() + if !args.Quiet && dbc.Version != "(devel)" && err == nil { + if semver.MustParse(dbc.Version).LessThan(latestVer) { + fmt.Printf(descStyle.Render("dbc Version %s is available! You are using %s, please upgrade.\n\n"), + latestVer, dbc.Version) + } + } + if m, err = prog.Run(); err != nil { fmt.Fprintln(os.Stderr, "Error running program:", err) os.Exit(1) diff --git a/drivers.go b/drivers.go index 28bcf08..0fe61a3 100644 --- a/drivers.go +++ b/drivers.go @@ -502,3 +502,17 @@ func SignedByColumnar(lib, sig io.Reader) error { return result.SignatureError() } + +func GetLatestDbcVersion() (*semver.Version, error) { + resp, err := makereq("https://dbc.columnar.tech") + if err != nil { + return nil, fmt.Errorf("failed to fetch latest dbc version: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusNoContent { + return nil, fmt.Errorf("failed to fetch latest dbc version: %s", resp.Status) + } + + return semver.NewVersion(resp.Header.Get("x-dbc-latest")) +} From 20e74a7c42b471506e6c80972963525409fae2b5 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Wed, 21 Jan 2026 18:21:59 -0500 Subject: [PATCH 2/2] Update cmd/dbc/main.go Co-authored-by: Ian Cook --- cmd/dbc/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/dbc/main.go b/cmd/dbc/main.go index 0a28836..fa13ed7 100644 --- a/cmd/dbc/main.go +++ b/cmd/dbc/main.go @@ -230,7 +230,7 @@ func main() { latestVer, err := dbc.GetLatestDbcVersion() if !args.Quiet && dbc.Version != "(devel)" && err == nil { if semver.MustParse(dbc.Version).LessThan(latestVer) { - fmt.Printf(descStyle.Render("dbc Version %s is available! You are using %s, please upgrade.\n\n"), + fmt.Printf(descStyle.Render("dbc version %s is available! You are using version %s. Please upgrade.\n\n"), latestVer, dbc.Version) } }