Skip to content

Commit

Permalink
fix for skipping analytis
Browse files Browse the repository at this point in the history
  • Loading branch information
xavdid committed Oct 21, 2019
1 parent c601e77 commit 1d56b26
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 23 deletions.
17 changes: 14 additions & 3 deletions packages/cli/src/constants.js
Expand Up @@ -40,25 +40,36 @@ const ANALYTICS_MODES = {
const PACKAGE_VERSION = require('../package.json').version;
const UPDATE_NOTIFICATION_INTERVAL = 1000 * 60 * 60 * 24 * 7; // one week

// can't just read from argv because they could have lots of extra data, such as
// [ '/Users/david/.nvm/versions/node/v10.13.0/bin/node',
// '/Users/david/projects/zapier/platform/node_modules/.bin/mocha',
// 'src/tests' ]
const argvStr = process.argv.join(' ');
const IS_TESTING =
argvStr.includes('mocha') ||
argvStr.includes('jest') ||
(process.env.NODE_ENV || '').toLowerCase().startsWith('test');

module.exports = {
ANALYTICS_KEY,
ANALYTICS_MODES,
API_PATH,
AUTH_KEY,
AUTH_LOCATION,
AUTH_LOCATION_RAW,
AUTH_LOCATION,
BASE_ENDPOINT,
BLACKLISTED_PATHS,
BUILD_DIR,
BUILD_PATH,
SOURCE_PATH,
BLACKLISTED_PATHS,
CURRENT_APP_FILE,
DEBUG,
DEFINITION_PATH,
ENDPOINT,
IS_TESTING,
LAMBDA_VERSION,
PACKAGE_VERSION,
PLATFORM_PACKAGE,
SOURCE_PATH,
STARTER_REPO,
UPDATE_NOTIFICATION_INTERVAL
};
42 changes: 22 additions & 20 deletions packages/cli/src/utils/analytics.js
Expand Up @@ -2,7 +2,7 @@ const { callAPI } = require('./api');
// const { readFile } = require('./files');
const debug = require('debug')('zapier:analytics');
const pkg = require('../../package.json');
const { ANALYTICS_KEY, ANALYTICS_MODES } = require('../constants');
const { ANALYTICS_KEY, ANALYTICS_MODES, IS_TESTING } = require('../constants');
const { readUserConfig, writeUserConfig } = require('./userConfig');

const currentAnalyticsMode = async () => {
Expand All @@ -15,19 +15,22 @@ const setAnalyticsMode = newMode => {
return writeUserConfig({ [ANALYTICS_KEY]: newMode });
};

const shouldSkipAnalytics = mode =>
IS_TESTING ||
process.env.DISABLE_ZAPIER_ANALYTICS ||
mode === ANALYTICS_MODES.disabled;

const recordAnalytics = async (command, isValidCommand, args, flags) => {
const analyticsMode = await currentAnalyticsMode();

const shouldRecordAnalytics =
process.env.DISABLE_ZAPIER_ANALYTICS ||
(process.NODE_ENV !== 'test' && analyticsMode !== ANALYTICS_MODES.disabled);

if (!shouldRecordAnalytics) {
if (shouldSkipAnalytics(analyticsMode)) {
debug('skipping analytics');
return;
}

const shouldRecordAnonymously = analyticsMode === ANALYTICS_MODES.anonymous;

// to make this more testable, we should split this out into its own function
const analyticsBody = {
command,
isValidCommand,
Expand All @@ -41,25 +44,24 @@ const recordAnalytics = async (command, isValidCommand, args, flags) => {
};

debug('sending', analyticsBody);
return shouldRecordAnalytics
? callAPI(
'/analytics',
{
method: 'POST',
body: analyticsBody,
skipDeployKey: shouldRecordAnonymously
},
true,
false
)
.then(({ success }) => debug('success:', success))
.catch(({ errText }) => debug('err:', errText))
: Promise.resolve();
return callAPI(
'/analytics',
{
method: 'POST',
body: analyticsBody,
skipDeployKey: shouldRecordAnonymously
},
true,
false
)
.then(({ success }) => debug('success:', success))
.catch(({ errText }) => debug('err:', errText));
};

module.exports = {
currentAnalyticsMode,
recordAnalytics,
shouldSkipAnalytics,
modes: ANALYTICS_MODES,
setAnalyticsMode
};

0 comments on commit 1d56b26

Please sign in to comment.