diff --git a/cmd/beads_viewer/main.go b/cmd/beads_viewer/main.go new file mode 100644 index 0000000..35cc2c8 --- /dev/null +++ b/cmd/beads_viewer/main.go @@ -0,0 +1,53 @@ +package main + +import ( + "context" + "encoding/json" + "log" + + "github.com/Dicklesworthstone/beads_viewer/pkg/model" + "github.com/Dicklesworthstone/beads_viewer/pkg/ui" + "github.com/LazyBachelor/LazyPM/internal/service" + tea "github.com/charmbracelet/bubbletea" +) + +func main() { + config := service.Config{ + StatisticsStoragePath: "./.pm/stats.json", + BeadsDBPath: "./.pm/db.db", + IssuePrefix: "pm", + } + + svc, close, err := service.NewServices(context.Background(), config) + if err != nil { + log.Fatal(err) + } + defer close() + + beadsIssues, err := svc.Beads.AllIssues(context.Background()) + if err != nil { + panic(err) + } + + modelIssues := make([]model.Issue, 0, len(beadsIssues)) + for _, issue := range beadsIssues { + jsonData, err := json.Marshal(issue) + if err != nil { + panic(err) + } + + var modelIssue model.Issue + if err := json.Unmarshal(jsonData, &modelIssue); err != nil { + panic(err) + } + modelIssues = append(modelIssues, modelIssue) + } + + model := ui.NewModel(modelIssues, nil, config.BeadsDBPath) + + if err := tea.NewProgram(model, tea.WithAltScreen(), + tea.WithMouseAllMotion()); err != nil { + panic(err) + } + +} diff --git a/cmd/tui/main.go b/cmd/tui/main.go index d5771be..9d2e455 100644 --- a/cmd/tui/main.go +++ b/cmd/tui/main.go @@ -2,15 +2,9 @@ package main import ( "context" - "encoding/json" - "fmt" - "os" - "github.com/Dicklesworthstone/beads_viewer/pkg/model" - bv_ui "github.com/Dicklesworthstone/beads_viewer/pkg/ui" - "github.com/LazyBachelor/LazyPM/internal/models" "github.com/LazyBachelor/LazyPM/internal/service" - tea "github.com/charmbracelet/bubbletea" + "github.com/LazyBachelor/LazyPM/pkg/tui" ) func main() { @@ -20,50 +14,7 @@ func main() { IssuePrefix: "pm", } - svc, close, err := service.NewServices(context.Background(), config) - if err != nil { - fmt.Fprintf(os.Stderr, "Error initializing services: %v\n", err) - os.Exit(1) - } - defer close() - - beadsIssues, err := svc.Beads.AllIssues(context.Background()) - if err != nil { - fmt.Fprintf(os.Stderr, "Error loading issues: %v\n", err) - os.Exit(1) - } - - issues, err := convertToModelIssues(beadsIssues) - if err != nil { - fmt.Fprintf(os.Stderr, "Error converting issues: %v\n", err) - os.Exit(1) - } - - model := bv_ui.NewModel(issues, nil, config.BeadsDBPath) - - p := tea.NewProgram(model, tea.WithAltScreen()) - if _, err := p.Run(); err != nil { - fmt.Fprintf(os.Stderr, "Error running TUI: %v\n", err) - os.Exit(1) + if err := tui.Run(context.Background(), config); err != nil { + panic(err) } } - -func convertToModelIssues(beadsIssues []models.Issue) ([]model.Issue, error) { - result := make([]model.Issue, 0, len(beadsIssues)) - - for _, issue := range beadsIssues { - - jsonData, err := json.Marshal(issue) - if err != nil { - return nil, fmt.Errorf("failed to marshal issue ID %s: %w", issue.ID, err) - } - - var modelIssue model.Issue - if err := json.Unmarshal(jsonData, &modelIssue); err != nil { - return nil, fmt.Errorf("failed to unmarshal issue ID %s: %w", issue.ID, err) - } - - result = append(result, modelIssue) - } - return result, nil -} diff --git a/pkg/tui/tui.go b/pkg/tui/tui.go index 91f6988..19db02a 100644 --- a/pkg/tui/tui.go +++ b/pkg/tui/tui.go @@ -1,8 +1,9 @@ package tui import ( - "github.com/LazyBachelor/LazyPM/internal/service" "context" + + "github.com/LazyBachelor/LazyPM/internal/service" ) type TUIConfig = service.Config @@ -15,4 +16,5 @@ func Run(ctx context.Context, config TUIConfig) error { defer cleanup() return nil + }