ted/main.go

50 lines
1.1 KiB
Go
Raw Normal View History

2013-06-04 01:27:43 +00:00
package main
import (
2018-09-01 02:02:01 +00:00
"flag"
"fmt"
"github.com/lmika/ted/ui"
2018-09-01 02:02:01 +00:00
"os"
2013-06-04 01:27:43 +00:00
)
func main() {
var flagCodec = flag.String("c", "csv", "file codec to use")
2018-09-01 02:02:01 +00:00
flag.Parse()
if flag.NArg() == 0 {
fmt.Fprintln(os.Stderr, "usage: ted FILENAME")
os.Exit(1)
}
2017-08-25 23:48:22 +00:00
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)
}
2017-08-25 23:48:22 +00:00
frame := NewFrame(uiManager)
session := NewSession(uiManager, frame, codecBuilder(flag.Arg(0)))
session.LoadFromSource()
2017-08-25 23:48:22 +00:00
uiManager.SetRootComponent(frame.RootComponent())
frame.enterMode(GridMode)
2017-08-25 23:48:22 +00:00
uiManager.Loop()
2013-06-04 01:27:43 +00:00
}
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'})
},
}