// Command tui is the correx terminal UI: a Bubble Tea client that speaks the
// correx WebSocket protocol to apps/server.
package main

import (
	"context"
	"flag"
	"fmt"
	"os"

	tea "charm.land/bubbletea/v2"
	"github.com/correx/tui-go/internal/app"
	"github.com/correx/tui-go/internal/ws"
)

func main() {
	host := flag.String("host", "localhost", "server host")
	port := flag.Int("port", 8080, "server port")
	flag.Parse()

	if path := os.Getenv("CORREX_TUI_LOG"); path != "" {
		f, err := tea.LogToFile(path, "tui")
		if err != nil {
			fmt.Fprintln(os.Stderr, "correx tui: cannot open log file:", err)
			os.Exit(1)
		}
		defer f.Close()
		app.EnableDebugLog()
	}

	client := ws.New(*host, *port)
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()
	go client.Run(ctx)

	// Alt-screen is requested per-frame via the View's AltScreen field in v2.
	p := tea.NewProgram(app.NewModel(client))
	if _, err := p.Run(); err != nil {
		fmt.Fprintln(os.Stderr, "correx tui error:", err)
		os.Exit(1)
	}
}
