UNPKG

balena-cli

Version:

The official balena Command Line Interface

70 lines (69 loc) 2.86 kB
"use strict"; 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