feat: add main application logic and model implementation with tests
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/StevanFreeborn/term-tier/internal/handlers"
|
||||
"github.com/StevanFreeborn/term-tier/internal/model"
|
||||
"github.com/StevanFreeborn/term-tier/internal/persistence"
|
||||
"github.com/StevanFreeborn/term-tier/internal/state"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
)
|
||||
|
||||
var (
|
||||
version = "dev"
|
||||
commit = "none"
|
||||
date = "unknown"
|
||||
)
|
||||
|
||||
func main() {
|
||||
showVersion := flag.Bool("version", false, "print version and exit")
|
||||
flag.Parse()
|
||||
|
||||
if *showVersion {
|
||||
fmt.Printf("termtier %s\n", version)
|
||||
fmt.Printf("build date: %s\n", date)
|
||||
fmt.Printf("commit: %s\n", commit)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
saver := persistence.NewFileSaver()
|
||||
|
||||
s := state.New()
|
||||
|
||||
keyMsgHandlers := handlers.GetAllKeyHandlers(saver)
|
||||
winSizeMsgHandlers := handlers.GetAllWinSizeHandlers()
|
||||
|
||||
m := model.New(
|
||||
s,
|
||||
model.WithKeyMsgHandlers(keyMsgHandlers),
|
||||
model.WithWinSizeMsgHandlers(winSizeMsgHandlers),
|
||||
)
|
||||
|
||||
p := tea.NewProgram(m, tea.WithAltScreen())
|
||||
|
||||
if _, err := p.Run(); err != nil {
|
||||
fmt.Printf("Error: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user