change signature of interfaces to fit Interface interface

This commit is contained in:
Robin Olsen
2026-02-12 19:57:52 +01:00
parent 0b840f87d8
commit 08ded5384c
4 changed files with 35 additions and 9 deletions

View File

@@ -11,8 +11,14 @@ import (
// CLIConfig is an alias for service.Config, used to configure the CLI. // CLIConfig is an alias for service.Config, used to configure the CLI.
type CLIConfig = service.Config type CLIConfig = service.Config
type CLI struct{}
func NewCli() *CLI {
return &CLI{}
}
// Run initializes the services and executes the CLI commands. // Run initializes the services and executes the CLI commands.
func Run(ctx context.Context, config CLIConfig) error { func (c *CLI) Run(ctx context.Context, config CLIConfig) error {
svc, cleanup, err := service.NewServices(ctx, config) svc, cleanup, err := service.NewServices(ctx, config)
if err != nil { if err != nil {
return err return err
@@ -30,7 +36,7 @@ func Run(ctx context.Context, config CLIConfig) error {
} }
// RunWithArgs initializes the services and executes the CLI commands with the provided arguments. // RunWithArgs initializes the services and executes the CLI commands with the provided arguments.
func RunWithArgs(ctx context.Context, config CLIConfig, args []string) error { func (c *CLI) RunWithArgs(ctx context.Context, config CLIConfig, args []string) error {
svc, cleanup, err := service.NewServices(ctx, config) svc, cleanup, err := service.NewServices(ctx, config)
if err != nil { if err != nil {
return err return err

View File

@@ -22,8 +22,14 @@ You can also run shell commands directly. Type 'exit' or 'quit' to leave.`
ReplTitle = "Welcome to Project Management CLI! " + ReplHelp ReplTitle = "Welcome to Project Management CLI! " + ReplHelp
) )
type REPL struct{}
func NewRepl() *REPL {
return &REPL{}
}
// RunREPL starts the interactive Read-Eval-Print Loop for the PM CLI. // RunREPL starts the interactive Read-Eval-Print Loop for the PM CLI.
func RunREPL(ctx context.Context, config cli.CLIConfig) error { func (r *REPL) Run(ctx context.Context, config cli.CLIConfig) error {
// Set terminal to raw mode to capture input properly in the REPL. // Set terminal to raw mode to capture input properly in the REPL.
// This allows us to handle input character by character and provide a better user experience. // This allows us to handle input character by character and provide a better user experience.
// We also ensure that the terminal state is restored when the REPL exits, even if an error occurs. // We also ensure that the terminal state is restored when the REPL exits, even if an error occurs.

View File

@@ -10,16 +10,24 @@ import (
type TUIConfig = service.Config type TUIConfig = service.Config
func Run(ctx context.Context, config TUIConfig) (tea.Model, error) { type Tui struct{}
func NewTui() *Tui {
return &Tui{}
}
func (t *Tui) Run(ctx context.Context, config TUIConfig) error {
svc, cleanup, err := service.NewServices(ctx, config) svc, cleanup, err := service.NewServices(ctx, config)
if err != nil { if err != nil {
return nil, err return nil
} }
defer cleanup() defer cleanup()
app := tea.NewProgram(views.NewDashboardView(svc), if _, err := tea.NewProgram(views.NewDashboardView(svc),
tea.WithAltScreen(), tea.WithMouseAllMotion()) tea.WithAltScreen(), tea.WithMouseAllMotion()).Run(); err != nil {
return err
}
return app.Run() return nil
} }

View File

@@ -11,10 +11,16 @@ import (
type WebConfig = service.Config type WebConfig = service.Config
type Web struct{}
func NewWeb() *Web {
return &Web{}
}
//go:embed assets/* //go:embed assets/*
var assets embed.FS var assets embed.FS
func Run(ctx context.Context, config WebConfig) error { func (w Web) Run(ctx context.Context, config WebConfig) error {
svc, cleanup, err := service.NewServices(ctx, config) svc, cleanup, err := service.NewServices(ctx, config)
if err != nil { if err != nil {
return err return err