UNPKG

@kosko/cli

Version:

Organize Kubernetes manifests in JavaScript.

115 lines 4.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateCmd = exports.generateHandler = exports.generateBuilder = void 0; const config_1 = require("@kosko/config"); const generate_1 = require("@kosko/generate"); const path_1 = require("path"); const error_1 = require("../../cli/error.js"); const set_option_1 = require("./set-option.js"); const require_1 = require("./require.js"); const env_1 = require("./env.js"); function resolveConfig(base, args) { const { components = [], require = [] } = args.env ? config_1.getConfig(base, args.env) : base; return { components: args.components && args.components.length ? args.components : components, require: [...require, ...(args.require || [])] }; } /* istanbul ignore next */ function generateBuilder(argv) { return argv .option("env", { type: "string", describe: "Environment name", alias: "e" }) .option("require", { type: "string", array: true, describe: "Require modules. Modules set in config file will also be required.", default: [], alias: "r" }) .option("set", { type: "string", array: true, describe: "Set values on the command line KEY=VAL (can be used multiple times)", alias: "s", coerce: set_option_1.parseSetOptions, default: [] }) .positional("components", { type: "string", array: true, describe: "Components to generate. This overrides components set in config file." }); } exports.generateBuilder = generateBuilder; async function generateHandler(args) { // Load config const globalConfig = await config_1.searchConfig(args.cwd); const config = { ...globalConfig, ...resolveConfig(globalConfig, args) }; if (!config.components.length) { throw new error_1.CLIError("No components are given", { output: "No components are given. Set components in a config file or in arguments." }); } // Setup env await env_1.setupEnv(config, args); // Require external modules for (const id of config.require) { await require_1.localRequireDefault(id, args.cwd); } // Generate manifests const result = await generate_1.generate({ path: path_1.join(args.cwd, "components"), components: config.components, extensions: config.extensions, validate: args.validate }); if (!result.manifests.length) { throw new error_1.CLIError("No manifests are exported from components", { output: `No manifests are exported from components. Make sure there are exported manifests in components.` }); } return result; } exports.generateHandler = generateHandler; exports.generateCmd = { command: "generate [components..]", describe: "Generate Kubernetes manifests", builder(argv) { /* istanbul ignore next */ return generateBuilder(argv) .option("output", { type: "string", describe: "Output format", default: generate_1.PrintFormat.YAML, choices: Object.keys(generate_1.PrintFormat).map((key) => generate_1.PrintFormat[key]), alias: "o" }) .option("validate", { type: "boolean", describe: "Validate components", default: true }) .example("$0 generate", "Generate manifests") .example("$0 generate foo bar", "Specify components") .example("$0 generate foo_*", "Use glob pattern") .example("$0 generate --env foo", "Set environment") .example("$0 generate -r ts-node/register", "Require external modules"); }, async handler(args) { const result = await generateHandler(args); generate_1.print(result, { format: args.output, writer: process.stdout }); } }; //# sourceMappingURL=index.js.map