composr-cli
Version:
CompoSR | Command Line Interface
157 lines (122 loc) • 4.24 kB
JavaScript
;
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;