gitpod/dev/gpctl/cmd/workspaces-watch.go
2022-12-08 13:05:19 -03:00

79 lines
1.9 KiB
Go

// Copyright (c) 2020 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
package cmd
/*
var defaultTemplate = `{{.Id}} {{.Phase}}: {{.Message}}{{"\n"}}`
// clientStartCmd starts a new workspace
var clientWatchCmd = &cobra.Command{
Use: "watch",
Short: "observe for workspace status changes",
Run: func(cmd *cobra.Command, args []string) {
tpl := template.New("tpl")
tpl, err := tpl.Parse(defaultTemplate)
if err != nil {
log.WithError(err).Fatal("cannot parse template")
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
conn, client, err := getWorkspacesClient(ctx)
if err != nil {
log.WithError(err).Fatal("cannot connect")
}
defer conn.Close()
sub, err := client.Subscribe(ctx, &api.SubscribeRequest{})
if err != nil {
log.WithError(err).Fatal("cannot subscribe")
}
rcvChan := make(chan *api.WorkspaceStatus)
go func() {
for {
update, err := sub.Recv()
if err != nil {
if err != io.EOF {
log.WithError(err).Warn("error while receiving updates")
}
return
}
sts, ok := update.Payload.(*api.SubscribeResponse_Status)
if !ok {
continue
}
rcvChan <- sts.Status
}
}()
// run until we're told to stop
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
log.Info("Listening for status updates. Stop with SIGINT or CTRL+C")
for {
select {
case <-sigChan:
log.Info("Received SIGINT - shutting down")
return
case sts := <-rcvChan:
err = tpl.Execute(os.Stdout, sts)
if err != nil {
log.WithError(err).WithField("status", sts).Info("status update")
}
}
}
},
}
*/
func init() {
// TODO: re-enable this once we're not talking over messagebus anymore
// workspacesCmd.AddCommand(workspacesWatchCmd)
}