@zendesk/zcli-themes
Version:
zcli theme commands live here
57 lines (56 loc) • 2.77 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const getManifest_1 = require("./getManifest");
const getTemplates_1 = require("./getTemplates");
const getVariables_1 = require("./getVariables");
const getAssets_1 = require("./getAssets");
const chalk = require("chalk");
const zcli_core_1 = require("@zendesk/zcli-core");
const errors_1 = require("@oclif/core/lib/errors");
const core_1 = require("@oclif/core");
const rewriteTemplates_1 = require("./rewriteTemplates");
const rewriteManifest_1 = require("./rewriteManifest");
const handleTemplateError_1 = require("./handleTemplateError");
const parseAxiosError_1 = require("./parseAxiosError");
async function migrate(themePath, flags) {
const manifest = (0, getManifest_1.default)(themePath);
const templates = (0, getTemplates_1.default)(themePath);
const variables = (0, getVariables_1.default)(themePath, manifest.settings, flags);
const assets = (0, getAssets_1.default)(themePath, flags);
const variablesPayload = variables.reduce((payload, variable) => (Object.assign(Object.assign({}, payload), { [variable.identifier]: variable.value })), {});
const assetsPayload = assets.reduce((payload, [parsedPath, url]) => (Object.assign(Object.assign({}, payload), { [parsedPath.base]: url })), {});
const metadataPayload = { api_version: manifest.api_version };
try {
core_1.CliUx.ux.action.start('Migrating theme');
const { data } = await zcli_core_1.request.requestAPI('/hc/api/internal/theming/migrations', {
method: 'POST',
headers: {
'X-Zendesk-Request-Originator': 'zcli themes:migrate'
},
data: {
templates: Object.assign(Object.assign({}, templates), { assets: assetsPayload, variables: variablesPayload, metadata: metadataPayload })
},
validateStatus: (status) => status === 200
});
(0, rewriteManifest_1.default)(themePath, data.metadata.api_version);
(0, rewriteTemplates_1.default)(themePath, data.templates);
core_1.CliUx.ux.action.stop('Ok');
}
catch (e) {
core_1.CliUx.ux.action.stop(chalk.bold.red('!'));
const { message, response } = (0, parseAxiosError_1.default)(e);
if (response) {
const { template_errors: templateErrors, general_error: generalError } = response.data;
if (templateErrors)
(0, handleTemplateError_1.default)(themePath, templateErrors);
else if (generalError)
(0, errors_1.error)(generalError);
else
(0, errors_1.error)(message);
}
else {
(0, errors_1.error)(e);
}
}
}
exports.default = migrate;