Path: blob/main/components/supervisor/cmd/send-analytics.go
2498 views
// Copyright (c) 2023 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package cmd56import (7"context"8"encoding/json"9"os"10"time"1112"github.com/gitpod-io/gitpod/common-go/analytics"13"github.com/gitpod-io/gitpod/supervisor/api"14log "github.com/sirupsen/logrus"15"github.com/spf13/cobra"16)1718var sendAnalyticsCmdOpts struct {19data string20event string21}2223// sendAnalyticsCmd represents the send-analytics command24var sendAnalyticsCmd = &cobra.Command{25Use: "send-analytics",26Long: "Sending anonymous statistics",27Hidden: true,28Args: cobra.ExactArgs(0),29Run: func(cmd *cobra.Command, args []string) {30file, err := os.OpenFile(os.TempDir()+"/supervisor-errors.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)31if err == nil {32log.SetOutput(file)33defer file.Close()34} else {35log.SetLevel(log.FatalLevel)36}3738ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)39defer cancel()4041data := make(map[string]interface{})42err = json.Unmarshal([]byte(sendAnalyticsCmdOpts.data), &data)43if err != nil {44log.Fatal(err)45}4647conn := dialSupervisor()48defer conn.Close()49wsInfo, err := api.NewInfoServiceClient(conn).WorkspaceInfo(ctx, &api.WorkspaceInfoRequest{})50if err != nil {51log.Fatal(err)52}5354data["instanceId"] = wsInfo.InstanceId55data["workspaceId"] = wsInfo.WorkspaceId5657w := analytics.NewFromEnvironment()58w.Track(analytics.TrackMessage{59Identity: analytics.Identity{UserID: wsInfo.OwnerId},60Event: sendAnalyticsCmdOpts.event,61Properties: data,62})63w.Close()64},65}6667func init() {68rootCmd.AddCommand(sendAnalyticsCmd)6970sendAnalyticsCmd.Flags().StringVarP(&sendAnalyticsCmdOpts.event, "event", "", "", "event name")71sendAnalyticsCmd.Flags().StringVarP(&sendAnalyticsCmdOpts.data, "data", "", "", "json data")7273_ = sendAnalyticsCmd.MarkFlagRequired("event")74_ = sendAnalyticsCmd.MarkFlagRequired("data")75}767778