UNPKG

@kosko/cli

Version:

Organize Kubernetes manifests in JavaScript.

71 lines 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.migrateCmd = void 0; const tslib_1 = require("tslib"); const migrate_1 = require("@kosko/migrate"); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const get_stdin_1 = tslib_1.__importDefault(require("get-stdin")); const path_1 = require("path"); const debug_1 = tslib_1.__importDefault(require("../cli/debug.js")); const print_1 = require("../cli/print.js"); const debug = debug_1.default.extend("migrate"); function concatFiles(arr) { if (!arr.length) return ""; let output = ""; for (const s of arr) { if (!s.startsWith("---")) output += "---\n"; output += s + "\n"; } return output; } function readFileString(path) { debug("Reading file", path); return fs_extra_1.default.readFile(path, "utf8"); } async function readFilesInDir(dir) { debug("Reading directory", dir); const files = await fs_extra_1.default.readdir(dir); const contents = await Promise.all(files.map((file) => readFileString(path_1.join(dir, file)))); return concatFiles(contents); } function readFiles(cwd, files) { return Promise.all(files.map(async (file) => { if (file === "-") { debug("Reading from stdin"); return get_stdin_1.default(); } const path = path_1.resolve(cwd, file); const stats = await fs_extra_1.default.stat(path); return stats.isDirectory() ? readFilesInDir(path) : readFileString(path); })); } function toArray(input) { return Array.isArray(input) ? input : [input]; } exports.migrateCmd = { command: "migrate", describe: "Migrate YAML into components", builder(argv) { /* istanbul ignore next */ return (argv // HACK: Don't set the type of filename option to "array" because yargs // can't parse `migrate -f -` properly. // Link: https://github.com/tommy351/kosko/issues/17 .option("filename", { type: "string", describe: "File, directory to migrate", required: true, alias: "f" }) .example("$0 migrate -f path/to/file", "Read from the path") .example("$0 migrate -f -", "Read from stdin")); }, async handler(args) { const file = concatFiles(await readFiles(args.cwd, toArray(args.filename))); const content = await migrate_1.migrateString(file); await print_1.print(content); } }; //# sourceMappingURL=migrate.js.map