UNPKG

appcenter-cli

Version:

Command line tool for Visual Studio App Center

64 lines (63 loc) 2.6 kB
"use strict"; // Function to query and persist telemetry enabling settings Object.defineProperty(exports, "__esModule", { value: true }); exports.saveTelemetryOption = exports.telemetryIsEnabled = void 0; const fs = require("fs"); const os = require("os"); const path = require("path"); const mkdirp = require("mkdirp"); const misc_1 = require("../misc"); const interaction_1 = require("../interaction"); const wrap = require("wordwrap"); const telemetryOptionFile = "telemetryEnabled.json"; const telemetryDisableEnvironmentVar = "MOBILE_CENTER_TELEMETRY"; const telemetryPromptText = os.EOL + "App Center CLI would like to collect data about how users use CLI commands " + "and some problems they encounter. Participation is voluntary and when you choose to participate your " + "device automatically sends information to Microsoft about how you use App Center CLI." + os.EOL + "For more information, please see our privacy policy at https://aka.ms/mobilecenterprivacy" + os.EOL; function promptForTelemetryEnable() { const width = interaction_1.terminal.columns() - 2; const promptText = wrap(width)(telemetryPromptText); if (!interaction_1.isQuiet()) { interaction_1.out.text(promptText); } return interaction_1.prompt.confirmWithTimeout("Enable telemetry? ", 30000, true); } function telemetryIsEnabled(disableTelemetrySwitch) { if (disableTelemetrySwitch) { return Promise.resolve(false); } if (process.env[telemetryDisableEnvironmentVar]) { return Promise.resolve(process.env[telemetryDisableEnvironmentVar].toLowerCase() === "on"); } if (hasTelemetryOptionSaved()) { return getSavedTelemetryOption(); } if (!interaction_1.terminal.isInteractive()) { return Promise.resolve(false); } return promptForTelemetryEnable().then((enabled) => { saveTelemetryOption(enabled); return enabled; }); } exports.telemetryIsEnabled = telemetryIsEnabled; function telemetryFileName() { return path.join(misc_1.getProfileDir(), telemetryOptionFile); } function hasTelemetryOptionSaved() { return misc_1.fileExistsSync(telemetryFileName()); } function getSavedTelemetryOption() { const fileContents = fs.readFileSync(telemetryFileName(), "utf8"); const enabled = JSON.parse(fileContents); return Promise.resolve(!!enabled); } function saveTelemetryOption(enabled) { mkdirp.sync(misc_1.getProfileDir()); fs.writeFileSync(telemetryFileName(), JSON.stringify(enabled), { encoding: "utf8" }); } exports.saveTelemetryOption = saveTelemetryOption;