ted/main.go
Leon Mika 9267fc92a7 A few minor feature
Added automatic resizing of the columns when loading a model
Added colouring of the currently search for cell
2024-09-24 12:45:22 +10:00

54 lines
1.2 KiB
Go

package main
import (
"flag"
"fmt"
"github.com/lmika/ted/ui"
"os"
)
func main() {
var flagCodec = flag.String("c", "csv", "file codec to use")
flag.Parse()
if flag.NArg() == 0 {
fmt.Fprintln(os.Stderr, "usage: ted FILENAME")
os.Exit(1)
}
uiManager, err := ui.NewUI()
if err != nil {
panic(err)
}
defer uiManager.Close()
codecBuilder, hasCodec := codecModelSourceBuilders[*flagCodec]
if !hasCodec {
fmt.Fprintf(os.Stderr, "unrecognised codec: %v", *flagCodec)
os.Exit(1)
}
frame := NewFrame(uiManager)
session := NewSession(uiManager, frame, codecBuilder(flag.Arg(0)))
session.LoadFromSource()
session.ResizeToBestFit()
uiManager.SetRootComponent(frame.RootComponent())
frame.enterMode(GridMode)
uiManager.Loop()
}
type codecModelSourceBuilder func(filename string) ModelSource
var codecModelSourceBuilders = map[string]codecModelSourceBuilder{
"csv": func(filename string) ModelSource {
return NewCsvFileModelSource(filename, CsvFileModelSourceOptions{Comma: ','})
},
"tsv": func(filename string) ModelSource {
return NewCsvFileModelSource(filename, CsvFileModelSourceOptions{Comma: '\t'})
},
"jira": func(filename string) ModelSource {
return JiraTableModelSource{Filename: filename, Header: true}
},
}