Skip to content

Commit 4480a82

Browse files
committed
moved a bunch of view stuff into internal/views
1 parent 1c5f457 commit 4480a82

File tree

4 files changed

+90
-70
lines changed

4 files changed

+90
-70
lines changed

internal/views/body.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type body struct {
2424
view *ui.View
2525
}
2626

27-
func newBody(w, h int, flashMessage chan string, opts ...Init) (*body, error) {
27+
func newBody(w, h int, flashMessage chan string, opts ...func(*stack) error) (*body, error) {
2828
r, err := newRoot(w, h-2, flashMessage)
2929
if err != nil {
3030
return nil, err
@@ -158,7 +158,7 @@ type stack struct {
158158
feeders []feeder
159159
}
160160

161-
func newStack(f feeder, opts ...Init) (stack, error) {
161+
func newStack(f feeder, opts ...func(*stack) error) (stack, error) {
162162
s := stack{top: f, feeders: []feeder{f}}
163163
for _, o := range opts {
164164
if err := o(&s); err != nil {
@@ -188,9 +188,7 @@ func (s *stack) pop() {
188188
s.top = s.feeders[len(s.feeders)-1]
189189
}
190190

191-
type Init func(*stack) error
192-
193-
func EnterTopic(t string) func(*stack) error {
191+
func enterTopic(t string) func(*stack) error {
194192
return func(s *stack) error {
195193
r, ok := s.top.(*root)
196194
if !ok {
@@ -214,7 +212,7 @@ func EnterTopic(t string) func(*stack) error {
214212
}
215213
}
216214

217-
func EnterPartition(p int) func(*stack) error {
215+
func enterPartition(p int) func(*stack) error {
218216
return func(s *stack) error {
219217
t, ok := s.top.(*topic)
220218
if !ok {
@@ -226,7 +224,7 @@ func EnterPartition(p int) func(*stack) error {
226224
}
227225
}
228226

229-
func EnterOffset(o int) func(*stack) error {
227+
func enterOffset(o int) func(*stack) error {
230228
return func(s *stack) error {
231229
p, ok := s.top.(*partition)
232230
if !ok {

internal/views/screen.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ type Screen struct {
4646
After func()
4747
}
4848

49-
func NewScreen(g *ui.Gui, width, height int, opts ...Init) (*Screen, error) {
49+
func newScreen(g *ui.Gui, width, height int, opts ...func(*stack) error) (*Screen, error) {
5050
ch := make(chan string)
5151
searchCh := make(chan string)
5252
b, err := newBody(width, height, ch, opts...)

internal/views/views.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package views
2+
3+
import (
4+
"fmt"
5+
"log"
6+
"os"
7+
8+
"github.com/cswank/kcli/internal/kafka"
9+
ui "github.com/jroimartin/gocui"
10+
)
11+
12+
func NewGui(topic string, partition, offset int) error {
13+
g, err := ui.NewGui(ui.Output256)
14+
if err != nil {
15+
return fmt.Errorf("could not create gui: %s", err)
16+
}
17+
18+
w, h := g.Size()
19+
opts := getOpts(topic, partition, offset)
20+
s, err := newScreen(g, w, h, opts...)
21+
if err != nil {
22+
g.Close()
23+
kafka.Close()
24+
log.Fatalf("error: %s", err)
25+
}
26+
27+
g.SetManagerFunc(s.GetLayout(g, w, h))
28+
g.Cursor = true
29+
g.InputEsc = true
30+
31+
if err := s.Keybindings(g); err != nil {
32+
return err
33+
}
34+
35+
if err != nil {
36+
log.Fatal(err)
37+
}
38+
39+
var closed bool
40+
defer func() {
41+
if !closed {
42+
g.Close()
43+
}
44+
kafka.Close()
45+
}()
46+
47+
if err := g.MainLoop(); err != nil {
48+
if err != ui.ErrQuit {
49+
log.SetOutput(os.Stderr)
50+
log.Println(err)
51+
return err
52+
}
53+
}
54+
55+
closed = true
56+
g.Close()
57+
if s.After != nil {
58+
s.After()
59+
}
60+
61+
return nil
62+
}
63+
64+
func getOpts(topic string, partition, offset int) []func(*stack) error {
65+
var out []func(*stack) error
66+
if topic != "" {
67+
out = append(out, enterTopic(topic))
68+
if partition != -1 {
69+
out = append(out, enterPartition(partition))
70+
if offset != -1 {
71+
out = append(out, enterOffset(offset))
72+
}
73+
}
74+
}
75+
return out
76+
}

main.go

Lines changed: 8 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -33,24 +33,18 @@ func init() {
3333
}
3434

3535
func main() {
36-
var err error
37-
g, err = ui.NewGui(ui.Output256)
38-
if err != nil {
39-
g.Close()
40-
kafka.Close()
41-
log.Fatal("could not create gui", err)
36+
setLogout()
37+
err := views.NewGui(*topic, *partition, *offset)
38+
if f != nil {
39+
f.Close()
40+
log.SetOutput(os.Stderr)
4241
}
43-
44-
w, h := g.Size()
45-
46-
opts := getOpts()
47-
s, err := views.NewScreen(g, w, h, opts...)
4842
if err != nil {
49-
g.Close()
50-
kafka.Close()
51-
log.Fatalf("error: %s", err)
43+
log.Fatal(err)
5244
}
45+
}
5346

47+
func setLogout() {
5448
if *logout != "" {
5549
var err error
5650
f, err = os.Create(*logout)
@@ -61,54 +55,6 @@ func main() {
6155
} else {
6256
log.SetOutput(ioutil.Discard)
6357
}
64-
65-
g.SetManagerFunc(s.GetLayout(g, w, h))
66-
g.Cursor = true
67-
g.InputEsc = true
68-
69-
var closed bool
70-
defer func() {
71-
if !closed {
72-
g.Close()
73-
}
74-
if f != nil {
75-
f.Close()
76-
}
77-
kafka.Close()
78-
}()
79-
80-
if err := s.Keybindings(g); err != nil {
81-
log.Println(err)
82-
return
83-
}
84-
85-
if err := g.MainLoop(); err != nil {
86-
if err != ui.ErrQuit {
87-
log.SetOutput(os.Stderr)
88-
log.Println(err)
89-
return
90-
}
91-
}
92-
93-
closed = true
94-
g.Close()
95-
if s.After != nil {
96-
s.After()
97-
}
98-
}
99-
100-
func getOpts() []views.Init {
101-
var out []views.Init
102-
if *topic != "" {
103-
out = append(out, views.EnterTopic(*topic))
104-
if *partition != -1 {
105-
out = append(out, views.EnterPartition(*partition))
106-
if *offset != -1 {
107-
out = append(out, views.EnterOffset(*offset))
108-
}
109-
}
110-
}
111-
return out
11258
}
11359

11460
func getAddresses(addrs []string) []string {

0 commit comments

Comments
 (0)