UNPKG

@tableau/taco-toolkit

Version:
184 lines 14.7 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.launchTableau = void 0; var os_1 = __importDefault(require("os")); var fs_1 = __importDefault(require("fs")); var error_codes_1 = require("../../../shared/errors/error-codes"); var error_source_1 = require("../../../shared/errors/error-source"); var status_code_1 = require("../../../shared/errors/status-code"); var command_1 = require("../utils/command"); var tableau_product_1 = require("../utils/tableau-product"); var constants_1 = require("../utils/constants"); var console_1 = require("../utils/console"); var logging_1 = require("../utils/logging"); var inquirer_1 = __importDefault(require("inquirer")); function launchTableau(config, state) { return __awaiter(this, void 0, void 0, function () { var spinner, tacoFolderPath, tacoFiles, proceed, executableDisplay, platform, _a, cmd, params, result, _b, stderr, stdout, error; return __generator(this, function (_c) { switch (_c.label) { case 0: spinner = state.spinner; tacoFolderPath = (0, command_1.resolvePath)(config.tacoFolderPath); tacoFiles = getTacoFiles(tacoFolderPath); if (!(tacoFiles.length === 0)) return [3 /*break*/, 2]; return [4 /*yield*/, askForContinue(tacoFolderPath)]; case 1: proceed = _c.sent(); if (!proceed) { (0, console_1.consoleWarn)('taco run has been cancelled.'); process.exit(1); } _c.label = 2; case 2: executableDisplay = getExecutableDisplayString(config); platform = os_1.default.platform(); if (!(0, tableau_product_1.isSupportedPlatform)(platform)) { (0, console_1.consoleError)("Unable to determine operating system type '".concat(platform, "' and corresponding executable '").concat(executableDisplay, "'.")); process.exit(1); } _a = getLaunchCmdAndParams(platform, tacoFolderPath, config), cmd = _a.cmd, params = _a.params; spinner.start("Starting Tableau ".concat(executableDisplay)); logging_1.logger.debug("Launching Tableau ".concat(executableDisplay, " with taco connectors:\n").concat(tacoFiles.join('\n'))); result = (0, command_1.executeCmd)(cmd, params); if ((0, command_1.isErrorResult)(result)) { spinner.fail("Failed to launch Tableau ".concat(executableDisplay)); _b = result.error, stderr = _b.stderr, stdout = _b.stdout, error = _b.error; logging_1.logger.debug("Execution failure: failed to install npm dependencies.\nstdout: \"".concat(stdout, "\"\nstderr: \"").concat(stderr, "\"")); (0, logging_1.logFatalError)({ statusCode: status_code_1.StatusCode.Cancelled, errorSource: error_source_1.ErrorSources.Client, errorCode: error_codes_1.ErrorCodes.X8KTF8LS, message: "Failed to start Tableau '".concat(executableDisplay, "'.\nMore information: ").concat(stderr), error: error, }); process.exit(constants_1.TACO_COMMAND_ERROR_EXIT_CODE); } spinner.success("Successfully launched Tableau ".concat(executableDisplay)); return [2 /*return*/]; } }); }); } exports.launchTableau = launchTableau; function getLaunchCmdAndParams(platform, tacoFolderPath, launchConfig) { var epsPath = launchConfig.epsPath; var tableauExecutable = getExecutablePath(platform, launchConfig); var launchParams = [ '--args', '-DLogLevel=debug', "-DConnectPluginsPath=".concat(tacoFolderPath), '-DDisableVerifyConnectorPluginSignature=true', ]; if (epsPath) { launchParams.push("-DEPSPath=".concat(epsPath)); } switch (platform) { case 'win32': { return { cmd: tableauExecutable, params: launchParams, }; } case 'darwin': { launchParams.unshift('-a', tableauExecutable); return { cmd: 'open', params: launchParams, }; } } } function isExecutableConfig(config) { return 'appPath' in config; } /** * Get an absolute path for a Tableau product */ function getExecutablePath(platform, config) { if (isExecutableConfig(config)) { return (0, command_1.resolvePath)(config.appPath); } var appName = config.appName, tableauVersion = config.appVersion; var executablePath = (0, tableau_product_1.getTableauExecutablePath)(platform, appName, tableauVersion); if (!fs_1.default.existsSync(executablePath)) { (0, logging_1.logFatalError)({ statusCode: status_code_1.StatusCode.FailedPrecondition, errorSource: error_source_1.ErrorSources.Content, errorCode: error_codes_1.ErrorCodes.BLLKEB1R, message: "Unable to locate executable file for Tableau ".concat(appName, " ").concat(tableauVersion, " at ").concat(executablePath, " \nIf the Tableau app is installed at different location, you can use --app-path instead."), }); process.exit(constants_1.TACO_COMMAND_ERROR_EXIT_CODE); } return executablePath; } function getExecutableDisplayString(config) { if (isExecutableConfig(config)) { return config.appPath; } return "".concat(config.appName, " ").concat(config.appVersion); } function askForContinue(tacoFolderPath) { return __awaiter(this, void 0, void 0, function () { var proceed; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, inquirer_1.default.prompt({ name: 'proceed', message: "There isn't any taco file under '".concat(tacoFolderPath, "'. Do you want to continue launching Tableau app?"), type: 'confirm', default: false, })]; case 1: proceed = (_a.sent()).proceed; return [2 /*return*/, proceed]; } }); }); } function getTacoFiles(tacoFolderPath) { return fs_1.default .readdirSync(tacoFolderPath, { withFileTypes: true }) .filter(function (item) { return !item.isDirectory() && item.name.endsWith('.taco'); }) .map(function (item) { return item.name; }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF1bmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS90YWNvLWNvbW1hbmRzL3J1bi9sYXVuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQW1CO0FBQ25CLDBDQUFtQjtBQUVuQixrRUFBK0Q7QUFDL0Qsb0VBQWtFO0FBQ2xFLGtFQUErRDtBQUMvRCw0Q0FBeUY7QUFDekYsNERBQXdIO0FBQ3hILGdEQUFpRTtBQUNqRSw0Q0FBNEQ7QUFDNUQsNENBQXdEO0FBQ3hELHNEQUErQjtBQWtCL0IsU0FBc0IsYUFBYSxDQUFDLE1BQW9CLEVBQUUsS0FBcUI7Ozs7OztvQkFDckUsT0FBTyxHQUFLLEtBQUssUUFBVixDQUFVO29CQUVuQixjQUFjLEdBQUcsSUFBQSxxQkFBVyxFQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtvQkFDbkQsU0FBUyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQTt5QkFDMUMsQ0FBQSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQSxFQUF0Qix3QkFBc0I7b0JBQ1IscUJBQU0sY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFBOztvQkFBOUMsT0FBTyxHQUFHLFNBQW9DO29CQUNwRCxJQUFJLENBQUMsT0FBTyxFQUFFO3dCQUNaLElBQUEscUJBQVcsRUFBQyw4QkFBOEIsQ0FBQyxDQUFBO3dCQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO3FCQUNoQjs7O29CQUdHLGlCQUFpQixHQUFHLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUN0RCxRQUFRLEdBQUcsWUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUM5QixJQUFJLENBQUMsSUFBQSxxQ0FBbUIsRUFBQyxRQUFRLENBQUMsRUFBRTt3QkFDbEMsSUFBQSxzQkFBWSxFQUNWLHFEQUE4QyxRQUFRLDZD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