/
amplitude_project.go
71 lines (59 loc) · 2 KB
/
amplitude_project.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package ddevapp
import (
"fmt"
"strings"
"github.com/ddev/ddev/pkg/amplitude"
"github.com/ddev/ddev/pkg/dockerutil"
"github.com/ddev/ddev/pkg/globalconfig"
"github.com/ddev/ddev/pkg/nodeps"
"github.com/ddev/ddev/third_party/ampli"
"github.com/denisbrodbeck/machineid"
)
// ProtectedID returns the unique hash value for the project.
func (app *DdevApp) ProtectedID() string {
appID, _ := machineid.ProtectedID("ddev" + app.Name)
return appID
}
// TrackProject collects and tracks information about the project for instrumentation.
func (app *DdevApp) TrackProject() {
// defer util.TimeTrack()()
// Initialization is currently done before via init() func somewhere while
// creating the ddevapp. This should be cleaned up.
// TODO: Remove once clean up has done.
amplitude.InitAmplitude()
// Early exit if instrumentation is disabled.
if ampli.Instance.Disabled {
return
}
containersOmitted := app.GetOmittedContainers()
var services []string
containers, err := dockerutil.GetAppContainers(app.Name)
if err == nil {
for _, k := range containers {
serviceName := strings.TrimPrefix(k.Names[0], "/")
shortName := strings.Replace(serviceName, fmt.Sprintf("ddev-%s-", app.Name), "", 1)
services = append(services, shortName)
}
}
builder := ampli.Project.Builder().
AddOns(GetInstalledAddonNames(app)).
Containers(services).
ContainersOmitted(containersOmitted).
FailOnHookFail(app.FailOnHookFail || app.FailOnHookFailGlobal).
Id(app.ProtectedID()).
NodejsVersion(app.NodeJSVersion).
PerformanceMode(app.GetPerformanceMode()).
PhpVersion(app.GetPhpVersion()).
ProjectType(app.GetType()).
RouterDisabled(IsRouterDisabled(app)).
WebserverType(app.GetWebserverType())
if !nodeps.ArrayContainsString(containersOmitted, "db") {
builder.
DatabaseType(app.Database.Type).
DatabaseVersion(app.Database.Version)
}
if !IsRouterDisabled(app) {
builder.Router(globalconfig.DdevGlobalConfig.Router)
}
ampli.Instance.Project("", builder.Build(), amplitude.GetEventOptions())
}