Fix: remove panics from code
This commit is contained in:
@@ -291,7 +291,7 @@ func listRolesWithUser() []string {
|
||||
return result
|
||||
}
|
||||
|
||||
func loadImage() {
|
||||
func loadImage() error {
|
||||
filepath := defaultImage
|
||||
cc := GetCardByRole(cfg.AssistantRole)
|
||||
if cc != nil {
|
||||
@@ -301,14 +301,15 @@ func loadImage() {
|
||||
}
|
||||
file, err := os.Open(filepath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return fmt.Errorf("failed to open image: %w", err)
|
||||
}
|
||||
defer file.Close()
|
||||
img, _, err := image.Decode(file)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return fmt.Errorf("failed to decode image: %w", err)
|
||||
}
|
||||
imgView.SetImage(img)
|
||||
return nil
|
||||
}
|
||||
|
||||
func strInSlice(s string, sl []string) bool {
|
||||
|
||||
@@ -10,16 +10,18 @@ import (
|
||||
//go:embed migrations/*
|
||||
var migrationsFS embed.FS
|
||||
|
||||
func (p *ProviderSQL) Migrate() {
|
||||
func (p *ProviderSQL) Migrate() error {
|
||||
// Get the embedded filesystem
|
||||
migrationsDir, err := fs.Sub(migrationsFS, "migrations")
|
||||
if err != nil {
|
||||
p.logger.Error("Failed to get embedded migrations directory;", "error", err)
|
||||
return fmt.Errorf("failed to get embedded migrations directory: %w", err)
|
||||
}
|
||||
// List all .up.sql files
|
||||
files, err := migrationsFS.ReadDir("migrations")
|
||||
if err != nil {
|
||||
p.logger.Error("Failed to read migrations directory;", "error", err)
|
||||
return fmt.Errorf("failed to read migrations directory: %w", err)
|
||||
}
|
||||
// Execute each .up.sql file
|
||||
for _, file := range files {
|
||||
@@ -27,11 +29,12 @@ func (p *ProviderSQL) Migrate() {
|
||||
err := p.executeMigration(migrationsDir, file.Name())
|
||||
if err != nil {
|
||||
p.logger.Error("Failed to execute migration %s: %v", file.Name(), err)
|
||||
panic(err)
|
||||
return fmt.Errorf("failed to execute migration %s: %w", file.Name(), err)
|
||||
}
|
||||
}
|
||||
}
|
||||
p.logger.Debug("All migrations executed successfully!")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ProviderSQL) executeMigration(migrationsDir fs.FS, fileName string) error {
|
||||
|
||||
@@ -103,7 +103,10 @@ func NewProviderSQL(dbPath string, logger *slog.Logger) FullRepo {
|
||||
return nil
|
||||
}
|
||||
p := ProviderSQL{db: db, logger: logger}
|
||||
p.Migrate()
|
||||
if err := p.Migrate(); err != nil {
|
||||
logger.Error("migration failed, app cannot start", "error", err)
|
||||
return nil
|
||||
}
|
||||
return p
|
||||
}
|
||||
|
||||
|
||||
16
tools.go
16
tools.go
@@ -212,9 +212,13 @@ func init() {
|
||||
roleToID["assistant"] = basicCard.ID
|
||||
sa, err := searcher.NewWebSurfer(searcher.SearcherTypeScraper, "")
|
||||
if err != nil {
|
||||
panic("failed to init seachagent; error: " + err.Error())
|
||||
if logger != nil {
|
||||
logger.Warn("search agent unavailable; web_search tool disabled", "error", err)
|
||||
}
|
||||
WebSearcher = nil
|
||||
} else {
|
||||
WebSearcher = sa
|
||||
}
|
||||
if err := rag.Init(cfg, logger, store); err != nil {
|
||||
logger.Warn("failed to init rag; rag_search tool will not be available", "error", err)
|
||||
}
|
||||
@@ -275,10 +279,16 @@ func updateToolCapabilities() {
|
||||
func getWebAgentClient() *agent.AgentClient {
|
||||
webAgentClientOnce.Do(func() {
|
||||
if cfg == nil {
|
||||
panic("cfg not initialized")
|
||||
if logger != nil {
|
||||
logger.Warn("web agent client unavailable: config not initialized")
|
||||
}
|
||||
return
|
||||
}
|
||||
if logger == nil {
|
||||
panic("logger not initialized")
|
||||
if logger != nil {
|
||||
logger.Warn("web agent client unavailable: logger not initialized")
|
||||
}
|
||||
return
|
||||
}
|
||||
getToken := func() string {
|
||||
if chunkParser == nil {
|
||||
|
||||
12
tui.go
12
tui.go
@@ -872,21 +872,27 @@ func init() {
|
||||
if err != nil {
|
||||
logger.Error("failed to open attached image", "path", lastImg, "error", err)
|
||||
// Fall back to showing agent image
|
||||
loadImage()
|
||||
if err := loadImage(); err != nil {
|
||||
logger.Warn("failed to load agent image", "error", err)
|
||||
}
|
||||
} else {
|
||||
defer file.Close()
|
||||
img, _, err := image.Decode(file)
|
||||
if err != nil {
|
||||
logger.Error("failed to decode attached image", "path", lastImg, "error", err)
|
||||
// Fall back to showing agent image
|
||||
loadImage()
|
||||
if err := loadImage(); err != nil {
|
||||
logger.Warn("failed to load agent image", "error", err)
|
||||
}
|
||||
} else {
|
||||
imgView.SetImage(img)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// No attached image, show agent image as before
|
||||
loadImage()
|
||||
if err := loadImage(); err != nil {
|
||||
logger.Warn("failed to load agent image", "error", err)
|
||||
}
|
||||
}
|
||||
pages.AddPage(imgPage, imgView, true, true)
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user