2013-06-04 01:27:43 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
2018-09-01 02:02:01 +00:00
|
|
|
"flag"
|
|
|
|
|
"fmt"
|
2022-06-03 00:29:06 +00:00
|
|
|
"github.com/lmika/ted/ui"
|
2018-09-01 02:02:01 +00:00
|
|
|
"os"
|
2013-06-04 01:27:43 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
2022-06-03 00:29:06 +00:00
|
|
|
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()
|
2015-01-03 07:50:37 +00:00
|
|
|
|
2022-06-03 00:29:06 +00:00
|
|
|
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)
|
2022-06-03 00:29:06 +00:00
|
|
|
session := NewSession(uiManager, frame, codecBuilder(flag.Arg(0)))
|
2018-09-01 01:27:34 +00:00
|
|
|
session.LoadFromSource()
|
2024-09-24 02:45:22 +00:00
|
|
|
session.ResizeToBestFit()
|
2015-01-03 07:50:37 +00:00
|
|
|
|
2017-08-25 23:48:22 +00:00
|
|
|
uiManager.SetRootComponent(frame.RootComponent())
|
|
|
|
|
frame.enterMode(GridMode)
|
2015-01-06 11:34:06 +00:00
|
|
|
|
2017-08-25 23:48:22 +00:00
|
|
|
uiManager.Loop()
|
2013-06-04 01:27:43 +00:00
|
|
|
}
|
2022-06-03 00:29:06 +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'})
|
|
|
|
|
},
|
2022-10-05 00:49:37 +00:00
|
|
|
"jira": func(filename string) ModelSource {
|
|
|
|
|
return JiraTableModelSource{Filename: filename, Header: true}
|
|
|
|
|
},
|
2022-06-03 00:29:06 +00:00
|
|
|
}
|