diff --git a/cmd/email-mcp/main.go b/cmd/email-mcp/main.go new file mode 100644 index 0000000..4a8b2e8 --- /dev/null +++ b/cmd/email-mcp/main.go @@ -0,0 +1,16 @@ +package main + +import ( + "fmt" + "os" + + "email-mcp/internal/cli" +) + +func main() { + app := cli.NewApp(nil, nil, nil, nil) + if err := app.Run(os.Args[1:]); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..75616fa --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module email-mcp + +go 1.25.0 diff --git a/internal/cli/app.go b/internal/cli/app.go new file mode 100644 index 0000000..03db9ea --- /dev/null +++ b/internal/cli/app.go @@ -0,0 +1,22 @@ +package cli + +import "fmt" + +type App struct{} + +func NewApp(_, _, _, _ any) *App { + return &App{} +} + +func (a *App) Run(args []string) error { + if len(args) == 0 { + return fmt.Errorf("usage: email-mcp ") + } + + switch args[0] { + case "setup", "mcp": + return nil + default: + return fmt.Errorf("unknown command: %s", args[0]) + } +} diff --git a/internal/cli/app_test.go b/internal/cli/app_test.go new file mode 100644 index 0000000..1bd1eb3 --- /dev/null +++ b/internal/cli/app_test.go @@ -0,0 +1,27 @@ +package cli + +import ( + "strings" + "testing" +) + +func TestAppRunRejectsUnknownCommand(t *testing.T) { + app := NewApp(nil, nil, nil, nil) + + err := app.Run([]string{"unknown"}) + if err == nil { + t.Fatal("expected error for unknown command") + } +} + +func TestAppRunShowsUsageWhenNoArgsProvided(t *testing.T) { + app := NewApp(nil, nil, nil, nil) + + err := app.Run(nil) + if err == nil { + t.Fatal("expected error for missing command") + } + if !strings.Contains(err.Error(), "usage:") { + t.Fatalf("expected usage text in error, got %q", err.Error()) + } +}