change signature of interfaces to fit Interface interface
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user