UNPKG

@zendesk/zcli-themes

Version:

zcli theme commands live here

50 lines (49 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@oclif/core"); const errors_1 = require("@oclif/core/lib/errors"); const zcli_core_1 = require("@zendesk/zcli-core"); const chalk = require("chalk"); const validationErrorsToString_1 = require("./validationErrorsToString"); async function pollJobStatus(themePath, jobId, interval = 1000, retries = 20) { core_1.CliUx.ux.action.start('Polling job status'); while (retries) { // Delay issuing a retry await new Promise(resolve => setTimeout(resolve, interval)); const response = await zcli_core_1.request.requestAPI(`/api/v2/guide/theming/jobs/${jobId}`); const job = response.data.job; switch (job.status) { case 'pending': retries -= 1; break; case 'completed': { core_1.CliUx.ux.action.stop('Ok'); return; } case 'failed': { // Although `data.job.errors` is an array, it usually contains // only one error at a time. Hence, we only need to handle the // first error in the array. const [error] = job.errors; handleJobError(themePath, error); } } } (0, errors_1.error)('Import job timed out'); } exports.default = pollJobStatus; function handleJobError(themePath, jobError) { const { code, message, meta } = jobError; const title = `${chalk.bold(code)} - ${message}`; let details = ''; switch (code) { case 'InvalidTemplates': case 'InvalidManifest': case 'InvalidTranslationFile': details = (0, validationErrorsToString_1.default)(themePath, meta); break; default: details = JSON.stringify(meta); } (0, errors_1.error)(`${title}\n${details}`); }