1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const tslib_1 = require("tslib");
|
4 | const migrate_1 = require("@kosko/migrate");
|
5 | const fs_1 = tslib_1.__importDefault(require("fs"));
|
6 | const get_stdin_1 = tslib_1.__importDefault(require("get-stdin"));
|
7 | const path_1 = require("path");
|
8 | const util_1 = require("util");
|
9 | const debug_1 = tslib_1.__importDefault(require("../cli/debug"));
|
10 | const print_1 = require("../cli/print");
|
11 | const debug = debug_1.default.extend("migrate");
|
12 | const stat = util_1.promisify(fs_1.default.stat);
|
13 | const readFile = util_1.promisify(fs_1.default.readFile);
|
14 | const readDir = util_1.promisify(fs_1.default.readdir);
|
15 | function readFileString(path) {
|
16 | debug("Reading file", path);
|
17 | return readFile(path, "utf8");
|
18 | }
|
19 | function 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 | }
|
27 | function 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 | }
|
38 | function 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 | }
|
49 | exports.migrateCmd = {
|
50 | command: "migrate",
|
51 | describe: "Migrate YAML into components",
|
52 | builder(argv) {
|
53 |
|
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 |
|
\ | No newline at end of file |