balena-cli
Version:
The official balena Command Line Interface
70 lines (69 loc) • 2.86 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@oclif/core");
const lazy_1 = require("../../utils/lazy");
const _ = require("lodash");
class OsBuildConfigCmd extends core_1.Command {
async run() {
const { args: params, flags: options } = await this.parse(OsBuildConfigCmd);
const { writeFile } = (await Promise.resolve().then(() => require('fs'))).promises;
const config = await this.buildConfig(params.image, params['device-type'], options.advanced);
await writeFile(options.output, JSON.stringify(config, null, 4));
console.info(`Config file "${options.output}" created successfully.`);
}
async buildConfig(image, deviceTypeSlug, advanced) {
advanced = advanced || false;
const { getManifest } = await Promise.resolve().then(() => require('../../utils/helpers'));
const deviceTypeManifest = await getManifest(image, deviceTypeSlug);
return this.buildConfigForDeviceType(deviceTypeManifest, advanced);
}
async buildConfigForDeviceType(deviceTypeManifest, advanced) {
advanced !== null && advanced !== void 0 ? advanced : (advanced = false);
let override;
const questions = deviceTypeManifest.options;
if (!advanced) {
const advancedGroup = _.find(questions, {
name: 'advanced',
isGroup: true,
});
if (advancedGroup != null) {
const { getGroupDefaults } = await Promise.resolve().then(() => require('../../utils/helpers'));
override = getGroupDefaults(advancedGroup);
}
}
return (0, lazy_1.getCliForm)().run(questions, { override });
}
}
OsBuildConfigCmd.description = (0, lazy_1.stripIndent) `
Prepare a configuration file for use by the 'os configure' command.
Interactively generate a configuration file that can then be used as
non-interactive input by the 'balena os configure' command.
`;
OsBuildConfigCmd.examples = [
'$ balena os build-config ../path/rpi3.img raspberrypi3 --output rpi3-config.json',
'$ balena os configure ../path/rpi3.img --device 7cf02a6 --config rpi3-config.json',
];
OsBuildConfigCmd.args = {
image: core_1.Args.string({
description: 'os image',
required: true,
}),
'device-type': core_1.Args.string({
description: 'device type',
required: true,
}),
};
OsBuildConfigCmd.flags = {
advanced: core_1.Flags.boolean({
description: 'show advanced configuration options',
char: 'v',
}),
output: core_1.Flags.string({
description: 'path to output JSON file',
char: 'o',
required: true,
}),
};
OsBuildConfigCmd.authenticated = true;
exports.default = OsBuildConfigCmd;
//# sourceMappingURL=build-config.js.map
;