balena-cli
Version:
The official balena Command Line Interface
79 lines (77 loc) • 3.23 kB
JavaScript
;
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