UNPKG

balena-cli

Version:

The official balena Command Line Interface

79 lines (77 loc) 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@oclif/core"); const lazy_1 = require("../../utils/lazy"); const messages_1 = require("../../utils/messages"); const JSONStream = require("JSONStream"); const stream_1 = require("stream"); const promises_1 = require("stream/promises"); class ReleaseListCmd extends core_1.Command { async run() { const { args: params, flags: options } = await this.parse(ReleaseListCmd); const fields = [ 'id', 'commit', 'created_at', 'status', 'raw_version', 'is_final', ]; const explicitReadFields = ['raw_version']; const fieldNameMap = { raw_version: 'version', }; const balena = (0, lazy_1.getBalenaSdk)(); const { getFleetSlug } = await Promise.resolve().then(() => require('../../utils/sdk')); const slug = await getFleetSlug(balena, params.fleet); const releases = await balena.models.release.getAllByApplication(slug, options.json ? { $expand: { release_tag: { $select: ['tag_key', 'value'], }, }, } : { $select: fields }); if (options.json) { const releasesWithExplicitReadFields = await balena.models.release.getAllByApplication(slug, { $select: ['id', ...explicitReadFields], }); const _ = await Promise.resolve().then(() => require('lodash')); const releasesWithExplicitReadFieldsById = _.keyBy(releasesWithExplicitReadFields, (r) => r.id); const augmentedReleases = releases.map((release) => ({ ...release, ...releasesWithExplicitReadFieldsById[release.id], })); await (0, promises_1.pipeline)(stream_1.Readable.from(augmentedReleases), JSONStream.stringify('[', ',', ']\n'), new stream_1.Writable({ write(chunk, encoding, callback) { process.stdout.write(chunk, encoding, callback); }, })); return; } console.log((0, lazy_1.getVisuals)().table.horizontal(releases.map((rel) => Object.fromEntries(Object.entries(rel).map(([f, val]) => { var _a; return [ (_a = fieldNameMap[f]) !== null && _a !== void 0 ? _a : f, val !== null && val !== void 0 ? val : 'N/a', ]; }))), fields.map((f) => { var _a; return (_a = fieldNameMap[f]) !== null && _a !== void 0 ? _a : f; }))); } } ReleaseListCmd.enableJsonFlag = true; ReleaseListCmd.description = (0, lazy_1.stripIndent) ` List all releases of a fleet. List all releases of the given fleet. ${messages_1.applicationNameNote.split('\n').join('\n\t\t')} `; ReleaseListCmd.examples = ['$ balena release list myorg/myfleet']; ReleaseListCmd.args = { fleet: core_1.Args.string({ description: 'fleet name or slug (preferred)', required: true, }), }; ReleaseListCmd.authenticated = true; exports.default = ReleaseListCmd; //# sourceMappingURL=list.js.map