From 9b06557455d983b4623820126b3bacd56648a6b8 Mon Sep 17 00:00:00 2001 From: Robin Olsen Date: Tue, 24 Mar 2026 21:04:05 +0100 Subject: [PATCH] separete into fucntion and use charm dependency instead --- cmd/pm/runner.go | 34 +++++++++++++++++++++------------- go.mod | 3 +-- pkg/repl/repl.go | 6 +++--- pkg/task/runner.go | 8 ++++---- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/cmd/pm/runner.go b/cmd/pm/runner.go index 68ef9e7..4b315cf 100644 --- a/cmd/pm/runner.go +++ b/cmd/pm/runner.go @@ -151,21 +151,10 @@ func runStartCmd(cmd *cobra.Command, args []string) error { return returnIfUserQuit(err, "task loop failed") } - fmt.Println("\033[H\033[2J") - - width, height, err := term.GetSize(os.Stdin.Fd()) - if err != nil { - return fmt.Errorf("failed to get terminal size: %w", err) + if err := endingMessage(); err != nil { + return fmt.Errorf("failed to display ending message: %w", err) } - content := lipgloss.NewStyle().Align(lipgloss.Center).Bold(true). - Render("You have completed all the tasks!\nThank you for participating in the survey.") - - centered := lipgloss.Place(width, height, lipgloss.Center, lipgloss.Center, content) - v := tea.NewView(centered) - fmt.Println(v.Content) - _, _ = fmt.Fscanf(os.Stdin, "%s") - return nil } @@ -216,6 +205,25 @@ func taskLoop(ctx context.Context, application *task.App, surveyTasks map[string return nil } +func endingMessage() error { + fmt.Println("\033[H\033[2J") + + width, height, err := term.GetSize(os.Stdin.Fd()) + if err != nil { + fmt.Printf("Failed to get terminal size: %v\n", err) + return err + } + + content := lipgloss.NewStyle().Align(lipgloss.Center).Bold(true). + Render("You have completed all the tasks!\nThank you for participating in the survey.") + + centered := lipgloss.Place(width, height, lipgloss.Center, lipgloss.Center, content) + v := tea.NewView(centered) + fmt.Println(v.Content) + _, _ = fmt.Fscanf(os.Stdin, "%s") + return nil +} + func returnIfUserQuit(err error, msg string) error { if errors.Is(err, task.ErrUserQuit) { return nil diff --git a/go.mod b/go.mod index 8fa7360..32b598c 100644 --- a/go.mod +++ b/go.mod @@ -4,13 +4,13 @@ go 1.26.1 require ( github.com/c-bata/go-prompt v0.2.7-0.20250812090649-d000795a4f93 + github.com/charmbracelet/x/term v0.2.2 github.com/go-git/go-git/v6 v6.0.0-20260317113930-fb0d09929504 github.com/joho/godotenv v1.5.1 github.com/muesli/reflow v0.3.0 github.com/spf13/pflag v1.0.10 github.com/steveyegge/beads v0.49.6 go.mongodb.org/mongo-driver/v2 v2.5.0 - golang.org/x/term v0.41.0 ) // Terminal dependencies @@ -48,7 +48,6 @@ require ( github.com/charmbracelet/x/exp/charmtone v0.0.0-20260316093931-f2fb44ab3145 // indirect github.com/charmbracelet/x/exp/ordered v0.1.0 // indirect github.com/charmbracelet/x/exp/strings v0.1.0 // indirect - github.com/charmbracelet/x/term v0.2.2 // indirect github.com/charmbracelet/x/termios v0.1.1 // indirect github.com/charmbracelet/x/windows v0.2.2 // indirect github.com/cli/browser v1.3.0 // indirect diff --git a/pkg/repl/repl.go b/pkg/repl/repl.go index 7e6eca2..cd38562 100644 --- a/pkg/repl/repl.go +++ b/pkg/repl/repl.go @@ -13,7 +13,7 @@ import ( "github.com/LazyBachelor/LazyPM/internal/style" "github.com/LazyBachelor/LazyPM/pkg/task" "github.com/c-bata/go-prompt" - "golang.org/x/term" + "github.com/charmbracelet/x/term" ) type App = models.App @@ -50,9 +50,9 @@ func (r *REPL) Run(ctx context.Context, config app.Config) error { r.currentFeedback = ValidationFeedback{} // Save terminal state to restore on exit - oldState, err := term.GetState(int(os.Stdin.Fd())) + oldState, err := term.GetState(uintptr(os.Stdin.Fd())) if err == nil { - defer term.Restore(int(os.Stdin.Fd()), oldState) + defer term.Restore(uintptr(os.Stdin.Fd()), oldState) } // Initialize services for beads, config and stats. diff --git a/pkg/task/runner.go b/pkg/task/runner.go index 9e4a30f..b99c746 100644 --- a/pkg/task/runner.go +++ b/pkg/task/runner.go @@ -6,9 +6,9 @@ import ( "log/slog" "os" - "charm.land/bubbletea/v2" + tea "charm.land/bubbletea/v2" "github.com/LazyBachelor/LazyPM/internal/models" - "golang.org/x/term" + "github.com/charmbracelet/x/term" ) type App = models.App @@ -125,8 +125,8 @@ func (r *TaskRunner) Run(ctx context.Context, t Tasker, i Interface, iType Inter } } - if oldState, err := term.GetState(int(os.Stdin.Fd())); err == nil { - term.Restore(int(os.Stdin.Fd()), oldState) + if oldState, err := term.GetState(uintptr(os.Stdin.Fd())); err == nil { + term.Restore(uintptr(os.Stdin.Fd()), oldState) } fmt.Print("\033[0m\033[?25h")