@@ -24,12 +24,14 @@ import (
2424
2525 "github.com/arduino/arduino-cli/arduino/discovery"
2626 "github.com/arduino/arduino-cli/arduino/discovery/discoverymanager"
27- ui "github.com/gizak/termui/v3"
28- "github.com/gizak/termui/v3/widgets"
2927 "github.com/sirupsen/logrus"
3028)
3129
3230func main () {
31+ if len (os .Args ) < 2 {
32+ fmt .Println ("Please specify at least one discovery." )
33+ os .Exit (1 )
34+ }
3335 logrus .SetLevel (logrus .ErrorLevel )
3436 dm := discoverymanager .New ()
3537 for _ , discCmd := range os .Args [1 :] {
@@ -38,98 +40,23 @@ func main() {
3840 }
3941 dm .Start ()
4042
41- activePorts := map [string ]* discovery.Port {}
4243 watcher , err := dm .Watch ()
4344 if err != nil {
4445 log .Fatalf ("failed to start discoveries: %v" , err )
4546 }
46- if err := ui .Init (); err != nil {
47- log .Fatalf ("failed to initialize termui: %v" , err )
48- }
49- defer ui .Close ()
50-
51- l := widgets .NewList ()
52- l .Title = "List"
53- l .TextStyle = ui .NewStyle (ui .ColorYellow )
54- l .WrapText = false
55- w , h := ui .TerminalDimensions ()
56- l .SetRect (0 , 0 , w , h )
57-
58- updateList := func () {
59- rows := []string {}
60- rows = append (rows , "Available ports list:" )
6147
62- ids := sort.StringSlice {}
63- for id := range activePorts {
64- ids = append (ids , id )
65- }
66- ids .Sort ()
67- for _ , id := range ids {
68- port := activePorts [id ]
69- rows = append (rows , fmt .Sprintf ("> Address: %s" , port .AddressLabel ))
70- rows = append (rows , fmt .Sprintf (" Protocol: %s" , port .ProtocolLabel ))
48+ for ev := range watcher .Feed () {
49+ port := ev .Port
50+ fmt .Printf ("> Port %s\n " , ev .Type )
51+ fmt .Printf (" Address: %s\n " , port .Address )
52+ fmt .Printf (" Protocol: %s\n " , port .Protocol )
53+ if ev .Type == "add" {
7154 keys := port .Properties .Keys ()
7255 sort .Strings (keys )
7356 for _ , k := range keys {
74- rows = append ( rows , fmt .Sprintf (" %s=%s" , k , port .Properties .Get (k ) ))
57+ fmt .Printf (" %s=%s\n " , k , port .Properties .Get (k ))
7558 }
7659 }
77- l .Rows = rows
78- }
79- updateList ()
80- ui .Render (l )
81-
82- previousKey := ""
83- uiEvents := ui .PollEvents ()
84- out:
85- for {
86- select {
87- case e := <- uiEvents :
88- switch e .ID {
89- case "<Resize>" :
90- payload := e .Payload .(ui.Resize )
91- l .SetRect (0 , 0 , payload .Width , payload .Height )
92- ui .Clear ()
93- case "q" , "<C-c>" :
94- break out
95- case "j" , "<Down>" :
96- l .ScrollDown ()
97- case "k" , "<Up>" :
98- l .ScrollUp ()
99- case "<C-d>" :
100- l .ScrollHalfPageDown ()
101- case "<C-u>" :
102- l .ScrollHalfPageUp ()
103- case "<C-f>" :
104- l .ScrollPageDown ()
105- case "<C-b>" :
106- l .ScrollPageUp ()
107- case "g" :
108- if previousKey == "g" {
109- l .ScrollTop ()
110- }
111- case "<Home>" :
112- l .ScrollTop ()
113- case "G" , "<End>" :
114- l .ScrollBottom ()
115- }
116-
117- if previousKey == "g" {
118- previousKey = ""
119- } else {
120- previousKey = e .ID
121- }
122-
123- case ev := <- watcher .Feed ():
124- if ev .Type == "add" {
125- activePorts [ev .Port .Address + "|" + ev .Port .Protocol ] = ev .Port
126- }
127- if ev .Type == "remove" {
128- delete (activePorts , ev .Port .Address + "|" + ev .Port .Protocol )
129- }
130- updateList ()
131- }
132-
133- ui .Render (l )
60+ fmt .Println ()
13461 }
13562}
0 commit comments