UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

84 lines 3.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setAnalyticsPipelinesComponent = void 0; const alwayscli_1 = require("@alwaysai/alwayscli"); const constants_1 = require("../../../constants"); const app_1 = require("../../../core/app"); const authentication_client_1 = require("../../../infrastructure/authentication-client"); const rest_client_1 = require("../../../infrastructure/rest-client"); const publish_1 = require("../../../subcommands/app/analytics/publish"); const util_1 = require("../../../util"); function getValidPipelinesFromInput(inputPipelines, orgPipelines) { const validUUIDs = orgPipelines.map((pipeline) => pipeline.uuid); return inputPipelines.filter((pipeline) => validUUIDs.includes(pipeline)); } async function promptForPipelineSelection(currentPipelines, channelIds, idTokenAuthorizationHeader) { const choices = channelIds.map((stream) => ({ title: stream.name, value: stream.uuid, selected: currentPipelines.includes(stream.uuid) })); choices.push({ title: 'Create A New Pipeline', value: 'CREATE_NEW_PIPELINE' }); const selected = await (0, util_1.promptForInput)({ purpose: 'choose which pipelines to set', questions: [ { type: 'multiselect', name: 'pipelines', instructions: false, message: 'Select pipelines [space to (un)select, enter to confirm]', choices } ] }); const finalPipelines = []; for (const pipelineId of selected.pipelines) { if (pipelineId === 'CREATE_NEW_PIPELINE') { const { name: pipelineName } = await (0, util_1.promptForInput)({ purpose: 'choose a name for the new pipeline', questions: [ { type: 'text', name: 'name', message: 'Name: ' } ] }); const newPipeline = await (0, rest_client_1.createAnalyticsPipeline)(pipelineName, idTokenAuthorizationHeader); finalPipelines.push(newPipeline.uuid); } else { finalPipelines.push(pipelineId); } } return finalPipelines; } const setAnalyticsPipelinesComponent = async ({ yes, inputs }) => { var _a, _b; const { getIdAuthorizationHeader } = (0, authentication_client_1.CliAuthenticationClient)(); const idTokenAuthorizationHeader = await getIdAuthorizationHeader(); const appCfgFile = (0, app_1.AppJsonFile)(); let orgPipelines; try { orgPipelines = await (0, rest_client_1.fetchAnalyticsPipelinesForOrg)(idTokenAuthorizationHeader); } catch (error) { util_1.logger.error((0, util_1.stringifyError)(error)); throw new alwayscli_1.CliTerseError(constants_1.NOT_IN_ORG_ERROR_MESSAGE); } const finalPipelines = yes ? getValidPipelinesFromInput(inputs || [], orgPipelines) : await promptForPipelineSelection((_b = (_a = appCfgFile.read().analytics) === null || _a === void 0 ? void 0 : _a.pipelines) !== null && _b !== void 0 ? _b : [], orgPipelines, idTokenAuthorizationHeader); const result = appCfgFile.update((appCfg) => { appCfg.analytics = Object.assign(Object.assign({}, appCfg.analytics), { pipelines: finalPipelines }); }); (0, publish_1.printAnalytics)({ changed: result.changed, analytics: appCfgFile.read().analytics }); }; exports.setAnalyticsPipelinesComponent = setAnalyticsPipelinesComponent; //# sourceMappingURL=set-analytics-pipelines-component.js.map