Something went wrong. Try again.
cli + tui to publish to leaflet (wip) & manage tasks, notes & watch/read lists 🍃
charm leaflet readability golang
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475package utils
import ( "context" "os" "strings"
"github.com/charmbracelet/log" "github.com/stormlightlabs/noteleaf/internal/models" "github.com/stormlightlabs/noteleaf/internal/repo" "golang.org/x/text/cases" "golang.org/x/text/language")
// Logger is the global application loggervar Logger *log.Logger
// NewLogger creates a new logger with the specified level and formatfunc NewLogger(level string, format string) *log.Logger { logger := log.New(os.Stderr)
switch strings.ToLower(level) { case "debug": logger.SetLevel(log.DebugLevel) case "info": logger.SetLevel(log.InfoLevel) case "warn", "warning": logger.SetLevel(log.WarnLevel) case "error": logger.SetLevel(log.ErrorLevel) default: logger.SetLevel(log.InfoLevel) }
if format == "json" { logger.SetFormatter(log.JSONFormatter) } else { logger.SetFormatter(log.TextFormatter) logger.SetReportTimestamp(true) }
return logger}
// GetLogger returns the global logger, creating a default one if it doesn't existfunc GetLogger() *log.Logger { if Logger == nil { Logger = NewLogger("info", "text") } return Logger}
func Titlecase(s string) string { return cases.Title(language.Und, cases.NoLower).String(s)}
// TestTaskRepository interface for dependency injection in teststype TestTaskRepository interface { List(ctx context.Context, options repo.TaskListOptions) ([]*models.Task, error) Update(ctx context.Context, task *models.Task) error}
// TestBookRepository interface for dependency injection in teststype TestBookRepository interface { List(ctx context.Context, options repo.BookListOptions) ([]*models.Book, error)}
// TestNoteRepository interface for dependency injection in tests.type TestNoteRepository interface { List(ctx context.Context, options repo.NoteListOptions) ([]*models.Note, error) ListPublished(ctx context.Context) ([]*models.Note, error) ListDrafts(ctx context.Context) ([]*models.Note, error) GetLeafletNotes(ctx context.Context) ([]*models.Note, error)}