Skip to content

Commit b51e07c

Browse files
committed
Factor out common print loop code (#25?)
1 parent 323f258 commit b51e07c

File tree

4 files changed

+18
-48
lines changed

4 files changed

+18
-48
lines changed

cmd/down.go

+1-12
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ var downCmd = &cobra.Command{
3030
region := viper.GetString("region")
3131
profile := viper.GetString("profile")
3232
stackName := viper.GetString("stack-name")
33-
printer := stackit.NewTailPrinter(cmd.OutOrStderr())
3433

3534
events := make(chan stackit.TailStackEvent)
3635

@@ -40,17 +39,7 @@ var downCmd = &cobra.Command{
4039
ctx := context.Background()
4140
printerCtx, printerCancel := context.WithCancel(ctx)
4241
defer printerCancel()
43-
44-
go func() {
45-
for {
46-
select {
47-
case <-printerCtx.Done():
48-
return
49-
case tailEvent := <-events:
50-
printer.PrintTailEvent(tailEvent)
51-
}
52-
}
53-
}()
42+
go printUntilDone(printerCtx, events, cmd.OutOrStderr())
5443

5544
err := sit.Down(ctx, stackName, events)
5645
if err != nil {

cmd/execute.go

+1-12
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,10 @@ func executeChangeSet(ctx context.Context, region, profile, stackName, changeSet
2929
sess := awsSession(profile, region)
3030
sit := stackit.NewStackit(cloudformation.New(sess), sts.New(sess))
3131
events := make(chan stackit.TailStackEvent)
32-
printer := stackit.NewTailPrinter(writer)
3332

3433
printerCtx, printerCancel := context.WithCancel(ctx)
3534
defer printerCancel()
36-
37-
go func() {
38-
for {
39-
select {
40-
case <-printerCtx.Done():
41-
return
42-
case tailEvent := <-events:
43-
printer.PrintTailEvent(tailEvent)
44-
}
45-
}
46-
}()
35+
go printUntilDone(printerCtx, events, writer)
4736

4837
var err error
4938
if len(changeSet) == 0 {

cmd/package.go

+1-12
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,10 @@ func packageTemplate(ctx context.Context, region, profile, stackName, templatePa
5252
packager := stackit.NewPackager(s3api, sts.New(sess), region)
5353

5454
events := make(chan stackit.TailStackEvent)
55-
printer := stackit.NewTailPrinter(writer)
5655

5756
printerCtx, printerCancel := context.WithCancel(ctx)
5857
defer printerCancel()
59-
60-
go func() {
61-
for {
62-
select {
63-
case <-printerCtx.Done():
64-
return
65-
case tailEvent := <-events:
66-
printer.PrintTailEvent(tailEvent)
67-
}
68-
}
69-
}()
58+
go printUntilDone(printerCtx, events, writer)
7059

7160
upInput, err := packager.Package(stackName, absPath, tags, parameters)
7261
if err != nil {

cmd/up.go

+15-12
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/glassechidna/stackit/pkg/stackit"
2424
"github.com/spf13/cobra"
2525
"github.com/spf13/viper"
26+
"io"
2627
"io/ioutil"
2728
"os"
2829
"strings"
@@ -68,20 +69,9 @@ var upCmd = &cobra.Command{
6869

6970
ctx := context.Background()
7071

71-
printer := stackit.NewTailPrinter(cmd.OutOrStderr())
7272
printerCtx, printerCancel := context.WithCancel(ctx)
7373
defer printerCancel()
74-
75-
go func() {
76-
for {
77-
select {
78-
case <-printerCtx.Done():
79-
return
80-
case tailEvent := <-events:
81-
printer.PrintTailEvent(tailEvent)
82-
}
83-
}
84-
}()
74+
go printUntilDone(printerCtx, events, cmd.OutOrStderr())
8575

8676
prepared, err := sit.Prepare(ctx, parsed, events)
8777
if err != nil {
@@ -106,6 +96,19 @@ var upCmd = &cobra.Command{
10696
},
10797
}
10898

99+
func printUntilDone(ctx context.Context, events <-chan stackit.TailStackEvent, w io.Writer) {
100+
printer := stackit.NewTailPrinter(w)
101+
102+
for {
103+
select {
104+
case <-ctx.Done():
105+
return
106+
case tailEvent := <-events:
107+
printer.PrintTailEvent(tailEvent)
108+
}
109+
}
110+
}
111+
109112
func keyvalSliceToMap(slice []string) map[string]string {
110113
theMap := map[string]string{}
111114

0 commit comments

Comments
 (0)