2017-01-06 10:47:08 +00:00
|
|
|
define(function(require, exports, module) {
|
|
|
|
main.consumes = [
|
|
|
|
"run", "output", "c9.analytics", "analytics.cookie"
|
|
|
|
];
|
|
|
|
main.provides = ["run_analytics"];
|
|
|
|
module.exports = main;
|
|
|
|
|
|
|
|
return main;
|
|
|
|
|
|
|
|
function main(options, imports, register) {
|
|
|
|
var analytics = imports["c9.analytics"];
|
|
|
|
var cookie = imports["analytics.cookie"];
|
|
|
|
var run = imports.run;
|
|
|
|
var output = imports.output;
|
|
|
|
var COOKIE_RUNNERS_NAME = "c9_runners_timestamp";
|
|
|
|
|
|
|
|
var analyticsOptions = {
|
|
|
|
integrations: {
|
|
|
|
"All": false
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
run.on("create", function(e) {
|
|
|
|
if (!e.process.runner)
|
|
|
|
return;
|
|
|
|
// Gets called whenever one creates a new process
|
2018-01-08 20:29:20 +00:00
|
|
|
var runner = e.process.runner;
|
2017-01-06 10:47:08 +00:00
|
|
|
var builtin = runner.$builtin;
|
|
|
|
var runnerName = runner.caption;
|
|
|
|
var cmdLength = runner.cmd && runner.cmd.length;
|
|
|
|
var properties = {
|
|
|
|
builtin: builtin,
|
|
|
|
runnerName: runnerName,
|
|
|
|
numParamsInCommand: cmdLength
|
|
|
|
};
|
|
|
|
|
|
|
|
// Once a day, if the Runner isn't used yet, track in all providers
|
|
|
|
try {
|
|
|
|
var rCookie = JSON.parse(cookie.get(COOKIE_RUNNERS_NAME));
|
|
|
|
|
|
|
|
if (!rCookie[runnerName] ||
|
|
|
|
!rCookie[runnerName].lastTimeLogged ||
|
|
|
|
rCookie[runnerName].lastTimeLogged === "" ||
|
|
|
|
new Date(parseInt(rCookie[runnerName].lastTimeLogged,
|
|
|
|
10)).getDate() != new Date().getDate()) {
|
|
|
|
sendToAllIntegrations(rCookie);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (e) {
|
|
|
|
sendToAllIntegrations(rCookie);
|
|
|
|
}
|
|
|
|
|
|
|
|
function sendToAllIntegrations(rCookie) {
|
|
|
|
analyticsOptions.integrations["Mixpanel"] = true;
|
|
|
|
|
|
|
|
rCookie = rCookie ? rCookie : {};
|
|
|
|
rCookie[runnerName] = { lastTimeLogged: Date.now() };
|
|
|
|
cookie.set(COOKIE_RUNNERS_NAME, JSON.stringify(rCookie), 1);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// "runConfigSaved" is fired on every change & IDE load, so discarding
|
|
|
|
// Send event when Runner Name changes, which is effectively saving a
|
|
|
|
// Runner Config
|
|
|
|
output.on("runnerNameChanged", function(name) {
|
|
|
|
analyticsOptions.integrations["Mixpanel"] = true;
|
|
|
|
var properties = {
|
|
|
|
runnerName: name
|
|
|
|
};
|
|
|
|
analytics.track("Runner Config Saved", properties,
|
|
|
|
analyticsOptions);
|
|
|
|
});
|
|
|
|
// Send event when CWD is set
|
|
|
|
output.on("cwdSet", function(cwd) {
|
|
|
|
// we don't want to send the exact CWD (privacy), but it's
|
|
|
|
// interesting to know if it differs from the root
|
|
|
|
var properties = {
|
|
|
|
isRoot: true
|
|
|
|
};
|
|
|
|
if (cwd != "/")
|
|
|
|
properties.isRoot = false;
|
|
|
|
analytics.track("CWD Set On Runner", properties, analyticsOptions);
|
|
|
|
});
|
|
|
|
// Send event when Environment variables are set
|
|
|
|
output.on("envSet", function(envVariable, config) {
|
|
|
|
var properties = {
|
|
|
|
numEnvironmentVariables: Object.keys(config).length
|
|
|
|
};
|
|
|
|
analytics.track("Environment Variables Set On Runner", properties,
|
|
|
|
analyticsOptions);
|
|
|
|
});
|
|
|
|
|
|
|
|
register(null, {
|
|
|
|
"run_analytics": {}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|