UNPKG

@zendesk/zcli-themes

Version:

zcli theme commands live here

57 lines (56 loc) 2.77 kB
"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;