-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
73 lines (61 loc) · 1.43 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package main
import (
"fmt"
"os"
"strconv"
"time"
"github.com/gdamore/tcell/v2"
"github.com/github/go-freetime"
"github.com/rivo/tview"
)
func label(s string) *tview.TextView {
return tview.NewTextView().
SetText(s + ":").
SetTextColor(tcell.ColorYellow)
}
func realMain() error {
t := time.Now()
if len(os.Args) == 2 {
parser, err := freetime.NewParser()
if err != nil {
return err
}
t, err = parser.Parse(os.Args[1])
if err != nil {
return err
}
}
app := tview.NewApplication()
pages := tview.NewPages()
grid := tview.NewGrid().
SetRows(1, 1).
SetColumns(15, 0)
timeWidget := NewTimeWidget(t)
unixFld := tview.NewInputField()
unixView := tview.NewTextView().SetText(strconv.FormatInt(t.Unix(), 10))
timeWidget.SetChangedFunc(func(t time.Time, err error) {
if err == nil {
text := strconv.FormatInt(t.Unix(), 10)
unixFld.SetText(text)
unixView.SetText(text)
}
})
grid.Box = tview.NewBox()
grid.SetBorders(true).
AddItem(label("ISO time"), 0, 0, 1, 1, 0, 0, false).
AddItem(timeWidget, 0, 1, 1, 1, 0, 0, true).
AddItem(label("UNIX timestamp"), 1, 0, 1, 1, 0, 0, false).
AddItem(unixView, 1, 1, 1, 1, 0, 0, false)
pages.AddPage("main", grid, false, true)
return app.SetRoot(grid, true).Run()
}
func main() {
if len(os.Args) > 2 {
fmt.Printf("Usage: %s [TIME]", os.Args[0])
os.Exit(1)
}
if err := realMain(); err != nil {
fmt.Fprintln(os.Stderr, err.Error())
os.Exit(1)
}
}