UNPKG

2.6 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const migrate_1 = require("@kosko/migrate");
5const fs_1 = tslib_1.__importDefault(require("fs"));
6const get_stdin_1 = tslib_1.__importDefault(require("get-stdin"));
7const path_1 = require("path");
8const util_1 = require("util");
9const debug_1 = tslib_1.__importDefault(require("../cli/debug"));
10const print_1 = require("../cli/print");
11const debug = debug_1.default.extend("migrate");
12const stat = util_1.promisify(fs_1.default.stat);
13const readFile = util_1.promisify(fs_1.default.readFile);
14const readDir = util_1.promisify(fs_1.default.readdir);
15function readFileString(path) {
16 debug("Reading file", path);
17 return readFile(path, "utf8");
18}
19function readFilesInDir(dir) {
20 return tslib_1.__awaiter(this, void 0, void 0, function* () {
21 debug("Reading directory", dir);
22 const files = yield readDir(dir);
23 const contents = yield Promise.all(files.map(file => readFileString(path_1.join(dir, file))));
24 return concatFiles(contents);
25 });
26}
27function concatFiles(arr) {
28 if (!arr.length)
29 return "";
30 let output = "";
31 for (const s of arr) {
32 if (!s.startsWith("---"))
33 output += "---\n";
34 output += s + "\n";
35 }
36 return output;
37}
38function readFiles(cwd, files) {
39 return Promise.all(files.map((file) => tslib_1.__awaiter(this, void 0, void 0, function* () {
40 if (file === "-") {
41 debug("Reading from stdin");
42 return get_stdin_1.default();
43 }
44 const path = path_1.resolve(cwd, file);
45 const stats = yield stat(path);
46 return stats.isDirectory() ? readFilesInDir(path) : readFileString(path);
47 })));
48}
49exports.migrateCmd = {
50 command: "migrate",
51 describe: "Migrate YAML into components",
52 builder(argv) {
53 /* istanbul ignore next */
54 return argv
55 .option("filename", {
56 type: "string",
57 describe: "File, directory to migrate",
58 required: true,
59 alias: "f",
60 array: true
61 })
62 .example("$0 migrate -f path/to/file", "Read from the path")
63 .example("$0 migrate -f -", "Read from stdin");
64 },
65 handler(args) {
66 return tslib_1.__awaiter(this, void 0, void 0, function* () {
67 const file = concatFiles(yield readFiles(args.cwd, args.filename));
68 const content = migrate_1.migrateString(file);
69 yield print_1.print(content);
70 });
71 }
72};
73//# sourceMappingURL=migrate.js.map
\No newline at end of file