// 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)
}
