-
Notifications
You must be signed in to change notification settings - Fork 288
/
analytics_updater.go
49 lines (38 loc) · 1.24 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
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 CmdUpTags map[string]string
func (t CmdUpTags) AsMap() map[string]string {
return (map[string]string)(t)
}
type AnalyticsUpdater struct {
ta *analytics.TiltAnalytics
cmdUpTags CmdUpTags
reportedCmdUp bool
}
func NewAnalyticsUpdater(ta *analytics.TiltAnalytics, cmdUpTags CmdUpTags) *AnalyticsUpdater {
return &AnalyticsUpdater{
ta: ta,
cmdUpTags: cmdUpTags,
reportedCmdUp: ta.EffectiveOpt() == wmanalytics.OptIn,
}
}
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.OptIn && !sub.reportedCmdUp {
sub.reportedCmdUp = true
sub.ta.Incr("cmd.up", sub.cmdUpTags.AsMap())
}
}
var _ store.Subscriber = &AnalyticsUpdater{}