@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
JavaScript
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for details.
;
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