UNPKG

@hkvstore/taco-cli

Version:

taco-cli is a command-line interface for rapid Apache Cordova development (forked from Microsoft taco-cli)

68 lines (66 loc) 3.97 kB
// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for details. "use strict"; var tacoUtility = require("taco-utils"); var PlatformHelper = require("./platformHelper"); var Settings = require("./settings"); var telemetryProperty = tacoUtility.TelemetryHelper.telemetryProperty; var BuildTelemetryHelper = (function () { function BuildTelemetryHelper() { } BuildTelemetryHelper.storePlatforms = function (telemetryProperties, modifier, platforms, settings) { var baseName = "platforms." + modifier + "."; var remoteBaseName = baseName + "remote"; if (platforms.length > 0) { this.encodePlatforms(telemetryProperties, baseName + "local", this.extractPlatformsList(platforms, PlatformHelper.BuildLocationType.Local)); } var remotePlatforms = this.extractPlatformsList(platforms, PlatformHelper.BuildLocationType.Remote); if (remotePlatforms.length > 0) { this.encodePlatforms(telemetryProperties, remoteBaseName, remotePlatforms); } remotePlatforms.forEach(function (platform) { if (settings.remotePlatforms && settings.remotePlatforms[platform]) { telemetryProperties["platforms.remote." + platform + ".is_secure"] = telemetryProperty(settings.remotePlatforms[platform].secure, /*isPii*/ false); } }); }; BuildTelemetryHelper.addCommandLineBasedPropertiesForBuildAndRun = function (telemetryProperties, knownOptions, commandData) { var _this = this; return Settings.loadSettingsOrReturnEmpty().then(function (settings) { var properties = tacoUtility.TelemetryHelper.addPropertiesFromOptions(telemetryProperties, knownOptions, commandData.options, _this.buildAndRunNonPiiOptions); return PlatformHelper.determinePlatformsFromOptions(commandData).then(function (platforms) { var requestedPlatforms = PlatformHelper.parseRequestedPlatforms(commandData); var requestedUsedPlatforms = platforms .filter(function (platform) { return requestedPlatforms.indexOf(platform.platform) !== -1; }); _this.storePlatforms(properties, "requestedViaCommandLine", requestedUsedPlatforms, settings); return properties; }); }); }; BuildTelemetryHelper.getIsPlatformPii = function () { var _this = this; return function (platform) { return _this.knownPlatforms.indexOf(platform.toLocaleLowerCase()) < 0; }; }; /* * Encode platform with pii or npii as required */ BuildTelemetryHelper.encodePlatforms = function (telemetryProperties, baseName, platforms) { var platformIndex = 1; // This is a one-based index platforms.forEach(function (platform) { telemetryProperties[baseName + platformIndex++] = telemetryProperty(platform, BuildTelemetryHelper.getIsPlatformPii()(platform)); }); }; BuildTelemetryHelper.extractPlatformsList = function (platforms, buildLocationType) { return platforms .filter(function (platform) { return platform.location === buildLocationType; }) .map(function (platform) { return platform.platform; }); }; // We don't use CordovaHelper.getSupportedPlatforms() because we need to validate this even if // cordova is not installed, and the white list is a good enough solution, so we just use it for all cases BuildTelemetryHelper.knownPlatforms = ["android", "ios", "amazon-fireos", "blackberry10", "browser", "firefoxos", "windows", "windows8", "wp8", "www"]; BuildTelemetryHelper.buildAndRunNonPiiOptions = ["clean", "local", "remote", "debuginfo", "nobuild", "device", "emulator", "target", "debug", "release"]; return BuildTelemetryHelper; }()); module.exports = BuildTelemetryHelper; //# sourceMappingURL=buildTelemetryHelper.js.map