Files
gastown/internal/doctor/sqlite3_check.go
Erik LaBianca add3d56c8b fix(doctor): add sqlite3 availability check (#575)
- Add sqlite3 to README.md prerequisites section
- Add gt doctor check that warns if sqlite3 CLI is not found
- Documents that sqlite3 is required for convoy database queries

Fixes #534

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 10:59:12 -08:00

53 lines
1.4 KiB
Go

package doctor
import (
"os/exec"
)
// Sqlite3Check verifies that sqlite3 CLI is available.
// sqlite3 is required for convoy-related database queries including:
// - gt convoy status (tracking issue progress)
// - gt sling duplicate convoy detection
// - TUI convoy panels
// - Daemon convoy completion detection
type Sqlite3Check struct {
BaseCheck
}
// NewSqlite3Check creates a new sqlite3 availability check.
func NewSqlite3Check() *Sqlite3Check {
return &Sqlite3Check{
BaseCheck: BaseCheck{
CheckName: "sqlite3-available",
CheckDescription: "Check sqlite3 CLI is installed (required for convoy features)",
CheckCategory: CategoryInfrastructure,
},
}
}
// Run checks if sqlite3 is available in PATH.
func (c *Sqlite3Check) Run(ctx *CheckContext) *CheckResult {
path, err := exec.LookPath("sqlite3")
if err != nil {
return &CheckResult{
Name: c.Name(),
Status: StatusWarning,
Message: "sqlite3 CLI not found",
Details: []string{
"sqlite3 is required for convoy features:",
" - gt convoy status (shows 0 tracked issues without it)",
" - gt sling duplicate convoy detection",
" - TUI convoy panels",
" - Daemon convoy completion detection",
},
FixHint: "Install sqlite3: apt install sqlite3 (Debian/Ubuntu) or brew install sqlite3 (macOS)",
}
}
return &CheckResult{
Name: c.Name(),
Status: StatusOK,
Message: "sqlite3 found at " + path,
}
}