balena-cli
Version:
The official balena Command Line Interface
80 lines (75 loc) • 2.93 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@oclif/core");
const errors_1 = require("../../errors");
const cf = require("../../utils/common-flags");
const lazy_1 = require("../../utils/lazy");
const messages_1 = require("../../utils/messages");
class TagListCmd extends core_1.Command {
constructor() {
super(...arguments);
this.missingResourceMessage = (0, lazy_1.stripIndent) `
To list tags for a resource, you must provide exactly one of:
* A fleet, with --fleet <fleetNameOrSlug>
* A device, with --device <uuid>
* A release, with --release <id or commit>
See the help page for examples:
$ balena help tag list
`;
}
async run() {
const { flags: options } = await this.parse(TagListCmd);
const balena = (0, lazy_1.getBalenaSdk)();
if (!options.fleet && !options.device && !options.release) {
throw new errors_1.ExpectedError(this.missingResourceMessage);
}
let tags;
if (options.fleet) {
const { getFleetSlug } = await Promise.resolve().then(() => require('../../utils/sdk'));
tags = await balena.models.application.tags.getAllByApplication(await getFleetSlug(balena, options.fleet));
}
if (options.device) {
tags = await balena.models.device.tags.getAllByDevice(options.device);
}
if (options.release) {
const { disambiguateReleaseParam } = await Promise.resolve().then(() => require('../../utils/normalization'));
const releaseParam = await disambiguateReleaseParam(balena, options.release);
tags = await balena.models.release.tags.getAllByRelease(releaseParam);
}
if (!tags || tags.length === 0) {
throw new errors_1.ExpectedError('No tags found');
}
console.log((0, lazy_1.getVisuals)().table.horizontal(tags, ['tag_key', 'value']));
}
}
TagListCmd.aliases = ['tags'];
TagListCmd.deprecateAliases = true;
TagListCmd.description = (0, lazy_1.stripIndent) `
List all tags for a fleet, device or release.
List all tags and their values for the specified fleet, device or release.
${messages_1.applicationIdInfo.split('\n').join('\n\t\t')}
`;
TagListCmd.examples = [
'$ balena tag list --fleet MyFleet',
'$ balena tag list -f myorg/myfleet',
'$ balena tag list --device 7cf02a6',
'$ balena tag list --release 1234',
'$ balena tag list --release b376b0e544e9429483b656490e5b9443b4349bd6',
];
TagListCmd.flags = {
fleet: {
...cf.fleet,
exclusive: ['device', 'release'],
},
device: {
...cf.device,
exclusive: ['fleet', 'release'],
},
release: {
...cf.release,
exclusive: ['fleet', 'device'],
},
};
TagListCmd.authenticated = true;
exports.default = TagListCmd;
//# sourceMappingURL=list.js.map
;