// Generated by CoffeeScript 1.12.4
var Mixpanel, Promise, _, packageJSON, resin;

_ = require('lodash');

Mixpanel = require('mixpanel');

Promise = require('bluebird');

resin = require('resin-sdk-preconfigured');

packageJSON = require('../package.json');

exports.getLoggerInstance = _.memoize(function() {
  return resin.models.config.getMixpanelToken().then(Mixpanel.init);
});

exports.trackCommand = function(capitanoCommand) {
  var capitanoStateGetMatchCommandAsync;
  capitanoStateGetMatchCommandAsync = Promise.promisify(require('capitano').state.getMatchCommand);
  return Promise.props({
    resinUrl: resin.settings.get('resinUrl'),
    username: resin.auth.whoami(),
    mixpanel: exports.getLoggerInstance()
  }).then(function(data) {
    return capitanoStateGetMatchCommandAsync(capitanoCommand.command).then(function(command) {
      return data.mixpanel.track("[CLI] " + (command.signature.toString()), {
        distinct_id: data.username,
        argv: process.argv.join(' '),
        version: packageJSON.version,
        node: process.version,
        arch: process.arch,
        resinUrl: data.resinUrl,
        platform: process.platform,
        command: capitanoCommand
      });
    });
  });
};