Skip to content

Commit 7d2cb5b

Browse files
authored
add watch flag to queue list (#753)
Signed-off-by: Mikhail Scherba <mikhail.scherba@flant.com>
1 parent 6859849 commit 7d2cb5b

File tree

3 files changed

+70
-6
lines changed

3 files changed

+70
-6
lines changed

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ require (
3636
github.com/deckhouse/module-sdk v0.2.0
3737
github.com/gojuno/minimock/v3 v3.4.5
3838
github.com/itchyny/gojq v0.12.17
39+
github.com/muesli/termenv v0.16.0
3940
)
4041

4142
require (
4243
github.com/DataDog/gostackparse v0.7.0 // indirect
4344
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
4445
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
4546
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect
47+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
4648
github.com/beorn7/perks v1.0.1 // indirect
4749
github.com/cespare/xxhash/v2 v2.3.0 // indirect
4850
github.com/davecgh/go-spew v1.1.1 // indirect
@@ -79,7 +81,9 @@ require (
7981
github.com/json-iterator/go v1.1.12 // indirect
8082
github.com/klauspost/compress v1.17.9 // indirect
8183
github.com/kylelemons/godebug v1.1.0 // indirect
84+
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
8285
github.com/mailru/easyjson v0.7.7 // indirect
86+
github.com/mattn/go-isatty v0.0.20 // indirect
8387
github.com/mitchellh/mapstructure v1.4.1 // indirect
8488
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
8589
github.com/modern-go/reflect2 v1.0.2 // indirect
@@ -91,6 +95,7 @@ require (
9195
github.com/prometheus/client_model v0.6.1 // indirect
9296
github.com/prometheus/common v0.55.0 // indirect
9397
github.com/prometheus/procfs v0.15.1 // indirect
98+
github.com/rivo/uniseg v0.4.7 // indirect
9499
github.com/spf13/pflag v1.0.5 // indirect
95100
github.com/tidwall/gjson v1.14.4 // indirect
96101
github.com/tidwall/match v1.1.1 // indirect

go.sum

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:o
1717
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY=
1818
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
1919
github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
20+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
21+
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
2022
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
2123
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
2224
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -228,6 +230,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
228230
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
229231
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
230232
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
233+
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
234+
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
231235
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
232236
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
233237
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
@@ -236,6 +240,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0
236240
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
237241
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
238242
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
243+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
244+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
239245
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
240246
github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
241247
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
@@ -248,6 +254,8 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY
248254
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
249255
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
250256
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
257+
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
258+
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
251259
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
252260
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
253261
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
@@ -284,6 +292,8 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G
284292
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
285293
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
286294
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
295+
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
296+
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
287297
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
288298
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
289299
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
@@ -409,6 +419,7 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
409419
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
410420
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
411421
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
422+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
412423
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
413424
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
414425
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=

pkg/debug/debug-cmd.go

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@ package debug
22

33
import (
44
"fmt"
5+
"os"
6+
"os/signal"
57
"time"
68

9+
"github.com/muesli/termenv"
710
"gopkg.in/alecthomas/kingpin.v2"
811

912
"github.com/flant/shell-operator/pkg/app"
1013
)
1114

1215
var (
13-
outputFormat = "text"
14-
showEmpty = false
16+
outputFormat = "text"
17+
showEmpty = false
18+
watch = false
19+
watchInterval = "1s"
1520
)
1621

1722
func DefineDebugCommands(kpApp *kingpin.Application) {
@@ -20,16 +25,59 @@ func DefineDebugCommands(kpApp *kingpin.Application) {
2025

2126
queueListCmd := queueCmd.Command("list", "Dump tasks in all queues.").
2227
Action(func(_ *kingpin.ParseContext) error {
23-
out, err := Queue(DefaultClient()).List(outputFormat, showEmpty)
24-
if err != nil {
25-
return err
28+
var refreshInterval time.Duration
29+
output := termenv.NewOutput(os.Stdout)
30+
31+
if watch {
32+
c := make(chan os.Signal, 1)
33+
signal.Notify(c, os.Interrupt)
34+
35+
go func() {
36+
<-c
37+
output.ExitAltScreen()
38+
os.Exit(0)
39+
}()
40+
41+
output.AltScreen()
42+
output.ClearScreen()
43+
output.MoveCursor(1, 1)
44+
var err error
45+
refreshInterval, err = time.ParseDuration(watchInterval)
46+
if err != nil {
47+
output.WriteString(fmt.Sprintf("could not parse watch refresh interval: %s, default 1s applied\n", err))
48+
refreshInterval = time.Second
49+
}
2650
}
27-
fmt.Println(string(out))
51+
52+
for {
53+
out, err := Queue(DefaultClient()).List(outputFormat, showEmpty)
54+
if err != nil {
55+
return err
56+
}
57+
58+
output.Write(out)
59+
if !watch {
60+
break
61+
}
62+
63+
time.Sleep(refreshInterval)
64+
output.ClearScreen()
65+
output.MoveCursor(1, 1)
66+
output.WriteString(time.Now().Format(time.RFC3339))
67+
output.MoveCursor(3, 1)
68+
}
69+
2870
return nil
2971
})
3072
queueListCmd.Flag("show-empty", "Show empty queues.").Short('e').
3173
Default("false").
3274
BoolVar(&showEmpty)
75+
queueListCmd.Flag("watch", "Keep watching.").Short('w').
76+
Default("false").
77+
BoolVar(&watch)
78+
queueListCmd.Flag("watchInterval", "Watch refresh interval.").Short('t').
79+
Default(watchInterval).
80+
StringVar(&watchInterval)
3381
AddOutputJsonYamlTextFlag(queueListCmd)
3482
app.DefineDebugUnixSocketFlag(queueListCmd)
3583

0 commit comments

Comments
 (0)