alwaysai
Version:
The alwaysAI command-line interface (CLI)
84 lines • 3.69 kB
JavaScript
;
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