vtex
Version:
The platform for e-commerce apps
68 lines (67 loc) • 2.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const semver_1 = tslib_1.__importDefault(require("semver"));
const Router_1 = require("../../api/clients/IOClients/infra/Router");
const SessionManager_1 = require("../../api/session/SessionManager");
const logger_1 = tslib_1.__importDefault(require("../../api/logger"));
const table_1 = require("../../api/table");
const utils_1 = require("./utils");
const { account, workspace } = SessionManager_1.SessionManager.getSingleton();
const router = Router_1.createRouterClient();
const { listAvailableServices, listInstalledServices, getAvailableVersions } = router;
const printAvailableServices = () => listAvailableServices()
.then((availableRes) => {
const table = table_1.createTable({ head: ['Name', 'Last stable', 'Last prerelease'] });
Object.keys(availableRes).forEach(res => {
const [stable, prerelease] = utils_1.getLastStableAndPrerelease(availableRes[res]);
table.push([res, chalk_1.default.bold.green(stable), chalk_1.default.yellow(prerelease)]);
});
return table;
})
.then(table => {
logger_1.default.info('Available services');
console.log(table.toString());
});
const printAvailableServiceVersions = (name, filter) => getAvailableVersions(name).then(({ versions }) => {
const region = Object.keys(versions)[0];
return versions[region]
.filter(v => !filter || v.indexOf(filter) >= 0)
.map(semver_1.default.valid)
.filter(v => v !== null)
.sort(semver_1.default.compare)
.reverse()
.slice(0, 20)
.forEach(v => {
if (semver_1.default.prerelease(v) !== null) {
console.log(` ${chalk_1.default.yellow(v)}`);
}
else {
console.log(` ${chalk_1.default.bold.green(v)}`);
}
});
});
const printInstalledServices = () => listInstalledServices()
.then((installedRes) => {
const table = table_1.createTable();
installedRes.forEach(({ name, version }) => {
const validVersion = semver_1.default.valid(version);
const styledVersion = semver_1.default.prerelease(validVersion) !== null ? chalk_1.default.yellow(validVersion) : chalk_1.default.bold.green(validVersion);
table.push([name, styledVersion]);
});
return table;
})
.then(table => {
logger_1.default.info(`Services installed on ${chalk_1.default.blue(account)}/${chalk_1.default.green(workspace)}`);
console.log(table.toString());
});
exports.default = (name, options) => {
const filter = options.f || options.filter;
const available = options.a || options.available;
return available
? name
? printAvailableServiceVersions(name, filter)
: printAvailableServices()
: printInstalledServices();
};