UNPKG

composr-cli

Version:
157 lines (122 loc) 4.24 kB
'use strict'; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _print = require('./print'); var _print2 = _interopRequireDefault(_print); var _login = require('./login'); var _login2 = _interopRequireDefault(_login); var _environments = require('./environments'); var _environments2 = _interopRequireDefault(_environments); var _requestPromise = require('request-promise'); var _requestPromise2 = _interopRequireDefault(_requestPromise); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _cliTable = require('cli-table'); var _cliTable2 = _interopRequireDefault(_cliTable); var _co = require('co'); var _co2 = _interopRequireDefault(_co); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function Unpublisher(config, options) { // Get environment configuration (0, _environments2.default)(config, options, function (err, envName, selectedEnv, _config) { if (err) _print2.default.error(err); // Authorize user to this environment (0, _login2.default)(selectedEnv.credentials, function (err, creds, domain) { if (err) _print2.default.error(err); process.env.ACCESS_TOKEN = creds.accessToken; process.env.CP_URL = selectedEnv.composrEndpoint; //console.log([null, creds.accessToken, domain]) _getEnvironmentPhrases(selectedEnv, options); }); }); } var _getEnvironmentPhrases = function _getEnvironmentPhrases(selectedEnv, options) { (0, _requestPromise2.default)({ url: selectedEnv.composrEndpoint + 'phrase', headers: { 'Authorization': 'Bearer ' + process.env.ACCESS_TOKEN }, method: 'GET', json: true }).then(function (body) { body.length > 0 ? _modelizePhraseResponse(body, options) : _print2.default.info('no phrases found on this environment'); }).catch(function (err) { _print2.default.error(err); }); }; var _modelizePhraseResponse = function _modelizePhraseResponse(phrasesList, options) { var versions = []; var phrasesObjects = phrasesList.map(function (p) { var _ver = p.id.slice(-5); versions.push(_ver); return { id: p.id, domain: p.domain, version: _ver }; }); versions = _lodash2.default.uniq(versions); //console.log(phrasesObjects) _print2.default.info('Phrase versions availables: '); var table = new _cliTable2.default({ head: ['Version'], colWidths: [30] }); versions.map(function (v) { table.push([v]); }); // Show table console.log(table.toString()); if (options.version && versions.indexOf(options.version) !== -1) { (function () { phrasesObjects = phrasesObjects.filter(function (p) { return p.version === options.version; }); //console.log(phrasesObjects) var deleteCalls = []; var versionToDelete = void 0; phrasesObjects.forEach(function (p) { versionToDelete = p.version; deleteCalls.push((0, _requestPromise2.default)({ url: process.env.CP_URL + 'phrase/' + p.id, headers: { 'Authorization': 'Bearer ' + process.env.ACCESS_TOKEN }, method: 'DELETE', json: true })); }); // Call to unpublish _unpublish(deleteCalls, versionToDelete); })(); } else { _print2.default.error('wrong version specified, please use --version=X.X.X'); } }; /** * Unpublish method with co-routines */ function _unpublish(deleteCalls, versionToDelete) { (0, _co2.default)(_regenerator2.default.mark(function _callee() { var res; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return deleteCalls; case 2: res = _context.sent; _print2.default.ok('All ' + versionToDelete + ' phrases and snippets removed'); case 4: case 'end': return _context.stop(); } } }, _callee, this); })).catch(onerror); } function onerror(err) { _print2.default.error(err); } module.exports = Unpublisher;