mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
79 lines
1.9 KiB
Go
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)
|
|
}
|