-
Notifications
You must be signed in to change notification settings - Fork 288
/
analytics_updater.go
55 lines (42 loc) · 1.28 KB
/
analytics_updater.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package analytics
import (
"context"
wmanalytics "github.com/windmilleng/wmclient/pkg/analytics"
"github.com/windmilleng/tilt/internal/analytics"
"github.com/windmilleng/tilt/internal/store"
"github.com/windmilleng/tilt/pkg/logger"
)
type CmdTags map[string]string
func (t CmdTags) AsMap() map[string]string {
return (map[string]string)(t)
}
type AnalyticsUpdater struct {
ta *analytics.TiltAnalytics
cmdTags CmdTags
reportedCmd bool
}
func NewAnalyticsUpdater(ta *analytics.TiltAnalytics, cmdTags CmdTags) *AnalyticsUpdater {
return &AnalyticsUpdater{
ta: ta,
cmdTags: cmdTags,
reportedCmd: ta.EffectiveOpt() != wmanalytics.OptOut,
}
}
func (sub *AnalyticsUpdater) OnChange(ctx context.Context, st store.RStore) {
state := st.RLockState()
defer st.RUnlockState()
sub.ta.SetTiltfileOpt(state.AnalyticsTiltfileOpt)
err := sub.ta.SetUserOpt(state.AnalyticsUserOpt)
if err != nil {
logger.Get(ctx).Infof("error saving analytics opt (tried to record opt: '%s')", state.AnalyticsUserOpt)
}
if sub.ta.EffectiveOpt() != wmanalytics.OptOut && !sub.reportedCmd {
sub.reportedCmd = true
cmd := "cmd.up"
if state.EngineMode.IsCIMode() {
cmd = "cmd.ci"
}
sub.ta.Incr(cmd, sub.cmdTags.AsMap())
}
}
var _ store.Subscriber = &AnalyticsUpdater{}