github.com/replicatedhq/ship@v0.55.0/pkg/lifecycle/daemon/statusonly/daemon.go (about) 1 package statusonly 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/go-kit/kit/log" 8 "github.com/go-kit/kit/log/level" 9 "github.com/replicatedhq/ship/pkg/lifecycle/daemon/daemontypes" 10 ) 11 12 // StatusReceiver implements the daemontypes statusreceiver by sending progress 13 // messages on a channel 14 var _ daemontypes.StatusReceiver = &StatusReceiver{} 15 16 type StatusReceiver struct { 17 Logger log.Logger 18 Name string 19 OnProgress func(daemontypes.Progress) 20 } 21 22 func (d *StatusReceiver) SetStepName(ctx context.Context, name string) { 23 d.OnProgress(daemontypes.StringProgress("phase", name)) 24 } 25 26 func (d *StatusReceiver) SetProgress(progress daemontypes.Progress) { 27 d.OnProgress(progress) 28 } 29 30 func (d *StatusReceiver) ClearProgress() { 31 // no-op I think, we'll implement this if/when we need it 32 } 33 34 func (d *StatusReceiver) PushStreamStep(ctx context.Context, messages <-chan daemontypes.Message) { 35 debug := level.Debug(log.With(d.Logger, "method", "pushStreamStep")) 36 for msg := range messages { 37 debug.Log("event", "message.receive", "contents", fmt.Sprintf("%.32s", msg.Contents)) 38 d.OnProgress(daemontypes.JSONProgress(d.Name, map[string]interface{}{ 39 "status": "working", 40 "message": msg, 41 })) 42 } 43 } 44 45 func (d *StatusReceiver) PushMessageStep(ctx context.Context, step daemontypes.Message, actions []daemontypes.Action) { 46 debug := level.Debug(log.With(d.Logger, "method", "pushMessageStep")) 47 48 debug.Log("event", "message") 49 d.OnProgress(daemontypes.JSONProgress("message step", map[string]interface{}{ 50 "status": "message", 51 "message": step, 52 "actions": actions, 53 })) 54 }