presetter 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/lib/content.d.ts +1 -1
- package/lib/content.js +58 -129
- package/lib/directive.js +67 -196
- package/lib/error.js +12 -36
- package/lib/executable/entry.js +55 -73
- package/lib/executable/error.js +24 -55
- package/lib/executable/index.js +5 -23
- package/lib/index.js +20 -69
- package/lib/io.d.ts +1 -1
- package/lib/io.js +88 -170
- package/lib/package.js +58 -149
- package/lib/preset.js +160 -294
- package/lib/run.js +59 -127
- package/lib/scripts.js +52 -128
- package/lib/template.js +70 -139
- package/lib/types.d.ts +1 -0
- package/lib/types.js +2 -1
- package/package.json +9 -1
- package/lib/content.js.map +0 -1
- package/lib/directive.js.map +0 -1
- package/lib/error.js.map +0 -1
- package/lib/executable/entry.js.map +0 -1
- package/lib/executable/error.js.map +0 -1
- package/lib/executable/index.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/io.js.map +0 -1
- package/lib/package.js.map +0 -1
- package/lib/preset.js.map +0 -1
- package/lib/run.js.map +0 -1
- package/lib/scripts.js.map +0 -1
- package/lib/template.js.map +0 -1
- package/lib/types.js.map +0 -1
package/lib/executable/entry.js
CHANGED
@@ -1,84 +1,66 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
});
|
6
|
-
exports.entry =
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
var _preset = require("../preset");
|
13
|
-
|
14
|
-
var _run = require("../run");
|
15
|
-
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
|
-
|
18
|
-
/*
|
19
|
-
* *** MIT LICENSE ***
|
20
|
-
* -------------------------------------------------------------------------
|
21
|
-
* This code may be modified and distributed under the MIT license.
|
22
|
-
* See the LICENSE file for details.
|
23
|
-
* -------------------------------------------------------------------------
|
24
|
-
*
|
25
|
-
* @summary Entry point for the command line interface (CLI)
|
26
|
-
*
|
27
|
-
* @author Alvis HT Tang <alvis@hilbert.space>
|
28
|
-
* @license MIT
|
29
|
-
* @copyright Copyright (c) 2019 - All Rights Reserved.
|
30
|
-
* -------------------------------------------------------------------------
|
31
|
-
*/
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.entry = void 0;
|
7
|
+
const fs_extra_1 = require("fs-extra");
|
8
|
+
const yargs_1 = __importDefault(require("yargs"));
|
9
|
+
const _preset_1 = require("../preset");
|
10
|
+
const _run_1 = require("../run");
|
32
11
|
const useCommand = {
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
12
|
+
command: 'use <preset..>',
|
13
|
+
describe: 'adopt the specified preset to the project',
|
14
|
+
builder: (yargs) => yargs
|
15
|
+
.positional('preset', {
|
16
|
+
required: true,
|
17
|
+
type: 'string',
|
18
|
+
description: 'proceed only if the specified file exists',
|
19
|
+
})
|
20
|
+
.help(),
|
21
|
+
handler: async (argv) => (0, _preset_1.setupPreset)(...argv.preset),
|
41
22
|
};
|
42
23
|
const bootstrapCommand = {
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
}
|
57
|
-
}
|
24
|
+
command: 'bootstrap',
|
25
|
+
describe: 'setup the project according to the specified preset',
|
26
|
+
builder: (yargs) => yargs
|
27
|
+
.option('only', {
|
28
|
+
type: 'string',
|
29
|
+
description: 'proceed only if the specified file exists',
|
30
|
+
})
|
31
|
+
.help(),
|
32
|
+
handler: async (argv) => {
|
33
|
+
const { only } = argv;
|
34
|
+
if (!only || (await (0, fs_extra_1.pathExists)(only))) {
|
35
|
+
await (0, _preset_1.bootstrapPreset)();
|
36
|
+
}
|
37
|
+
},
|
58
38
|
};
|
59
39
|
const runCommand = {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
await (0, _run.run)(task, args);
|
68
|
-
}
|
40
|
+
command: 'run',
|
41
|
+
describe: 'run a template script',
|
42
|
+
builder: (yargs) => yargs.usage('run <task>').demandCommand(),
|
43
|
+
handler: async (argv) => {
|
44
|
+
const [, task, ...args] = argv._.map((arg) => arg.toString());
|
45
|
+
await (0, _run_1.run)(task, args);
|
46
|
+
},
|
69
47
|
};
|
70
48
|
const unsetCommand = {
|
71
|
-
|
72
|
-
|
73
|
-
|
49
|
+
command: 'unset',
|
50
|
+
describe: 'remove all artifacts created by the preset',
|
51
|
+
handler: async () => (0, _preset_1.unsetPreset)(),
|
74
52
|
};
|
75
|
-
/**
|
76
|
-
* provide a command line interface
|
77
|
-
* @returns the command entered together with its options
|
78
|
-
*/
|
79
|
-
|
80
53
|
async function entry() {
|
81
|
-
|
82
|
-
|
54
|
+
const [, , ...args] = process.argv;
|
55
|
+
await yargs_1.default
|
56
|
+
.usage('⚙ presetter: your preset configurator')
|
57
|
+
.showHelpOnFail(true)
|
58
|
+
.command(useCommand)
|
59
|
+
.command(bootstrapCommand)
|
60
|
+
.command(runCommand)
|
61
|
+
.command(unsetCommand)
|
62
|
+
.demandCommand()
|
63
|
+
.parse(args);
|
83
64
|
}
|
84
|
-
|
65
|
+
exports.entry = entry;
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZXhlY3V0YWJsZS9lbnRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFlQSx1Q0FBc0M7QUFDdEMsa0RBQTBCO0FBRTFCLHFDQUFvRTtBQUNwRSwrQkFBMkI7QUFJM0IsTUFBTSxVQUFVLEdBQStEO0lBQzdFLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsUUFBUSxFQUFFLDJDQUEyQztJQUNyRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNqQixLQUFLO1NBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtRQUNwQixRQUFRLEVBQUUsSUFBYTtRQUN2QixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSwyQ0FBMkM7S0FDekQsQ0FBQztTQUNELElBQUksRUFBRTtJQUNYLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFXLEVBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3JELENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUdsQjtJQUNGLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLFFBQVEsRUFBRSxxREFBcUQ7SUFDL0QsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDakIsS0FBSztTQUNGLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDZCxJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSwyQ0FBMkM7S0FDekQsQ0FBQztTQUNELElBQUksRUFBRTtJQUNYLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztRQUd0QixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFBLHFCQUFVLEVBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUEseUJBQWUsR0FBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztDQUNGLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBa0I7SUFDaEMsT0FBTyxFQUFFLEtBQUs7SUFDZCxRQUFRLEVBQUUsdUJBQXVCO0lBQ2pDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxhQUFhLEVBQUU7SUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUV0QixNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFOUQsTUFBTSxJQUFBLFVBQUcsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztDQUNGLENBQUM7QUFFRixNQUFNLFlBQVksR0FBa0I7SUFDbEMsT0FBTyxFQUFFLE9BQU87SUFDaEIsUUFBUSxFQUFFLDRDQUE0QztJQUN0RCxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFBLHFCQUFXLEdBQUU7Q0FDbkMsQ0FBQztBQU1LLEtBQUssVUFBVSxLQUFLO0lBQ3pCLE1BQU0sQ0FBQyxFQUFFLEFBQUQsRUFBRyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFFbkMsTUFBTSxlQUFLO1NBQ1IsS0FBSyxDQUFDLHVDQUF1QyxDQUFDO1NBQzlDLGNBQWMsQ0FBQyxJQUFJLENBQUM7U0FDcEIsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUNuQixPQUFPLENBQUMsZ0JBQWdCLENBQUM7U0FDekIsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUNuQixPQUFPLENBQUMsWUFBWSxDQUFDO1NBQ3JCLGFBQWEsRUFBRTtTQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQixDQUFDO0FBWkQsc0JBWUMifQ==
|
package/lib/executable/error.js
CHANGED
@@ -1,59 +1,28 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
});
|
6
|
-
exports.handleError =
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
var _chalk = _interopRequireDefault(require("chalk"));
|
11
|
-
|
12
|
-
var _console = require("console");
|
13
|
-
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
|
-
|
16
|
-
/*
|
17
|
-
* *** MIT LICENSE ***
|
18
|
-
* -------------------------------------------------------------------------
|
19
|
-
* This code may be modified and distributed under the MIT license.
|
20
|
-
* See the LICENSE file for details.
|
21
|
-
* -------------------------------------------------------------------------
|
22
|
-
*
|
23
|
-
* @summary Helpers for handling error
|
24
|
-
*
|
25
|
-
* @author Alvis HT Tang <alvis@hilbert.space>
|
26
|
-
* @license MIT
|
27
|
-
* @copyright Copyright (c) 2019 - All Rights Reserved.
|
28
|
-
* -------------------------------------------------------------------------
|
29
|
-
*/
|
30
|
-
|
31
|
-
/* istanbul ignore file */
|
32
|
-
|
33
|
-
/**
|
34
|
-
* print error nicely on console
|
35
|
-
* @param error the error to be reported
|
36
|
-
*/
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.handleError = void 0;
|
7
|
+
const callsite_record_1 = __importDefault(require("callsite-record"));
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
9
|
+
const console_1 = require("console");
|
37
10
|
async function handleError(error) {
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
if (record) {
|
54
|
-
(0, _console.warn)();
|
55
|
-
(0, _console.warn)(await record.render({}));
|
11
|
+
if (!process.stdout.isTTY) {
|
12
|
+
(0, console_1.warn)(error);
|
13
|
+
}
|
14
|
+
else {
|
15
|
+
const type = chalk_1.default.red.bold(`[${error.name}]`);
|
16
|
+
const message = chalk_1.default.white.bold(error.message.trim());
|
17
|
+
(0, console_1.warn)(`${type} ${message}`);
|
18
|
+
const record = (0, callsite_record_1.default)({
|
19
|
+
forError: error,
|
20
|
+
});
|
21
|
+
if (record) {
|
22
|
+
(0, console_1.warn)();
|
23
|
+
(0, console_1.warn)(await record.render({}));
|
24
|
+
}
|
56
25
|
}
|
57
|
-
}
|
58
26
|
}
|
59
|
-
|
27
|
+
exports.handleError = handleError;
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZXhlY3V0YWJsZS9lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFpQkEsc0VBQW1EO0FBQ25ELGtEQUEwQjtBQUMxQixxQ0FBK0I7QUFNeEIsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFZO0lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUV6QixJQUFBLGNBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztLQUNiO1NBQU07UUFFTCxNQUFNLElBQUksR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFBLGNBQUksRUFBQyxHQUFHLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRzNCLE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQW9CLEVBQUM7WUFDbEMsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFBLGNBQUksR0FBRSxDQUFDO1lBQ1AsSUFBQSxjQUFJLEVBQUMsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDL0I7S0FDRjtBQUNILENBQUM7QUFwQkQsa0NBb0JDIn0=
|
package/lib/executable/index.js
CHANGED
@@ -1,24 +1,6 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
/*
|
8
|
-
* *** MIT LICENSE ***
|
9
|
-
* -------------------------------------------------------------------------
|
10
|
-
* This code may be modified and distributed under the MIT license.
|
11
|
-
* See the LICENSE file for details.
|
12
|
-
* -------------------------------------------------------------------------
|
13
|
-
*
|
14
|
-
* @summary A command line interface for presetter
|
15
|
-
*
|
16
|
-
* @author Alvis HT Tang <alvis@hilbert.space>
|
17
|
-
* @license MIT
|
18
|
-
* @copyright Copyright (c) 2019 - All Rights Reserved.
|
19
|
-
* -------------------------------------------------------------------------
|
20
|
-
*/
|
21
|
-
|
22
|
-
/* istanbul ignore file */
|
23
|
-
(0, _entry.entry)().catch(_error.handleError);
|
24
|
-
//# sourceMappingURL=index.js.map
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const entry_1 = require("./entry");
|
4
|
+
const error_1 = require("./error");
|
5
|
+
(0, entry_1.entry)().catch(error_1.handleError);
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZXhlY3V0YWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSxtQ0FBZ0M7QUFDaEMsbUNBQXNDO0FBRXRDLElBQUEsYUFBSyxHQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFXLENBQUMsQ0FBQyJ9
|
package/lib/index.js
CHANGED
@@ -1,71 +1,22 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
var _content = require("./content");
|
8
|
-
|
9
|
-
Object.keys(_content).forEach(function (key) {
|
10
|
-
if (key === "default" || key === "__esModule") return;
|
11
|
-
if (key in exports && exports[key] === _content[key]) return;
|
12
|
-
Object.defineProperty(exports, key, {
|
13
|
-
enumerable: true,
|
14
|
-
get: function () {
|
15
|
-
return _content[key];
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
16
7
|
}
|
17
|
-
|
18
|
-
})
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
var _io = require("./io");
|
34
|
-
|
35
|
-
Object.keys(_io).forEach(function (key) {
|
36
|
-
if (key === "default" || key === "__esModule") return;
|
37
|
-
if (key in exports && exports[key] === _io[key]) return;
|
38
|
-
Object.defineProperty(exports, key, {
|
39
|
-
enumerable: true,
|
40
|
-
get: function () {
|
41
|
-
return _io[key];
|
42
|
-
}
|
43
|
-
});
|
44
|
-
});
|
45
|
-
|
46
|
-
var _template = require("./template");
|
47
|
-
|
48
|
-
Object.keys(_template).forEach(function (key) {
|
49
|
-
if (key === "default" || key === "__esModule") return;
|
50
|
-
if (key in exports && exports[key] === _template[key]) return;
|
51
|
-
Object.defineProperty(exports, key, {
|
52
|
-
enumerable: true,
|
53
|
-
get: function () {
|
54
|
-
return _template[key];
|
55
|
-
}
|
56
|
-
});
|
57
|
-
});
|
58
|
-
|
59
|
-
var _types = require("./types");
|
60
|
-
|
61
|
-
Object.keys(_types).forEach(function (key) {
|
62
|
-
if (key === "default" || key === "__esModule") return;
|
63
|
-
if (key in exports && exports[key] === _types[key]) return;
|
64
|
-
Object.defineProperty(exports, key, {
|
65
|
-
enumerable: true,
|
66
|
-
get: function () {
|
67
|
-
return _types[key];
|
68
|
-
}
|
69
|
-
});
|
70
|
-
});
|
71
|
-
//# sourceMappingURL=index.js.map
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./content"), exports);
|
18
|
+
__exportStar(require("./directive"), exports);
|
19
|
+
__exportStar(require("./io"), exports);
|
20
|
+
__exportStar(require("./template"), exports);
|
21
|
+
__exportStar(require("./types"), exports);
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSwyQ0FBeUI7QUFDekIsNkNBQTJCO0FBQzNCLHNDQUFvQjtBQUNwQiw0Q0FBMEI7QUFFMUIseUNBQXVCIn0=
|
package/lib/io.d.ts
CHANGED
@@ -2,7 +2,7 @@ import type { Generator, PresetterConfig, ResolvedPresetContext, Template } from
|
|
2
2
|
export declare function loadDynamic<R extends Template | string[], K extends keyof PresetterConfig>(value: string | R | Generator<R, K>, context: ResolvedPresetContext<K>): Promise<R>;
|
3
3
|
export declare function loadFile(path: string, defaultFormat?: 'json' | 'yaml'): Promise<Record<string, unknown>>;
|
4
4
|
export declare function loadFile(path: string, defaultFormat?: 'text'): Promise<string>;
|
5
|
-
export declare function
|
5
|
+
export declare function serializeContent(destination: string, content: Template): string;
|
6
6
|
export declare function writeFiles(root: string, config: Record<string, Template>, pathMap: Record<string, string>): Promise<void>;
|
7
7
|
export declare function linkFiles(root: string, configurationLink: Record<string, string>): Promise<void>;
|
8
8
|
export declare function unlinkFiles(root: string, configurationLink: Record<string, string>): Promise<void>;
|
package/lib/io.js
CHANGED
@@ -1,188 +1,106 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
exports.loadFile = loadFile;
|
9
|
-
exports.serialiseContent = serialiseContent;
|
10
|
-
exports.unlinkFiles = unlinkFiles;
|
11
|
-
exports.writeFiles = writeFiles;
|
12
|
-
|
13
|
-
var _console = require("console");
|
14
|
-
|
15
|
-
var _fsExtra = require("fs-extra");
|
16
|
-
|
17
|
-
var _jsYaml = require("js-yaml");
|
18
|
-
|
19
|
-
var _path = require("path");
|
20
|
-
|
21
|
-
/*
|
22
|
-
* *** MIT LICENSE ***
|
23
|
-
* -------------------------------------------------------------------------
|
24
|
-
* This code may be modified and distributed under the MIT license.
|
25
|
-
* See the LICENSE file for details.
|
26
|
-
* -------------------------------------------------------------------------
|
27
|
-
*
|
28
|
-
* @summary Collection of io helpers
|
29
|
-
*
|
30
|
-
* @author Alvis HT Tang <alvis@hilbert.space>
|
31
|
-
* @license MIT
|
32
|
-
* @copyright Copyright (c) 2020 - All Rights Reserved.
|
33
|
-
* -------------------------------------------------------------------------
|
34
|
-
*/
|
35
|
-
// JSON format
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.unlinkFiles = exports.linkFiles = exports.writeFiles = exports.serializeContent = exports.loadFile = exports.loadDynamic = void 0;
|
4
|
+
const console_1 = require("console");
|
5
|
+
const fs_extra_1 = require("fs-extra");
|
6
|
+
const js_yaml_1 = require("js-yaml");
|
7
|
+
const path_1 = require("path");
|
36
8
|
const INDENT = 2;
|
37
|
-
/**
|
38
|
-
* load a potentially dynamic content
|
39
|
-
* @param value content to be loaded
|
40
|
-
* @param context context to be supplied to the generator
|
41
|
-
* @returns resolved content
|
42
|
-
*/
|
43
|
-
|
44
9
|
async function loadDynamic(value, context) {
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
10
|
+
if (typeof value === 'function') {
|
11
|
+
return value(context);
|
12
|
+
}
|
13
|
+
else if (typeof value === 'string' && (await (0, fs_extra_1.pathExists)(value))) {
|
14
|
+
return (await loadFile(value));
|
15
|
+
}
|
16
|
+
else {
|
17
|
+
return value;
|
18
|
+
}
|
52
19
|
}
|
53
|
-
|
54
|
-
* load the content of a file
|
55
|
-
* @param path file path to be loaded
|
56
|
-
* @param defaultFormat default format of the file
|
57
|
-
* @returns content of the file
|
58
|
-
*/
|
59
|
-
|
60
|
-
|
20
|
+
exports.loadDynamic = loadDynamic;
|
61
21
|
async function loadFile(path, defaultFormat = 'text') {
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
default:
|
73
|
-
return content;
|
74
|
-
}
|
22
|
+
const content = (await (0, fs_extra_1.readFile)(path)).toString();
|
23
|
+
switch ((0, path_1.extname)(path) || `.${defaultFormat}`) {
|
24
|
+
case '.json':
|
25
|
+
return JSON.parse(content);
|
26
|
+
case '.yaml':
|
27
|
+
case '.yml':
|
28
|
+
return (0, js_yaml_1.load)(content);
|
29
|
+
default:
|
30
|
+
return content;
|
31
|
+
}
|
75
32
|
}
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
switch ((0, _path.extname)(destination)) {
|
90
|
-
case '.yaml':
|
91
|
-
case '.yml':
|
92
|
-
return (0, _jsYaml.dump)(content);
|
93
|
-
|
94
|
-
case '.json':
|
95
|
-
default:
|
96
|
-
return JSON.stringify(content, null, INDENT);
|
97
|
-
}
|
33
|
+
exports.loadFile = loadFile;
|
34
|
+
function serializeContent(destination, content) {
|
35
|
+
if (typeof content === 'string') {
|
36
|
+
return content;
|
37
|
+
}
|
38
|
+
switch ((0, path_1.extname)(destination)) {
|
39
|
+
case '.yaml':
|
40
|
+
case '.yml':
|
41
|
+
return (0, js_yaml_1.dump)(content);
|
42
|
+
case '.json':
|
43
|
+
default:
|
44
|
+
return JSON.stringify(content, null, INDENT);
|
45
|
+
}
|
98
46
|
}
|
99
|
-
|
100
|
-
* write all generated configuration to their destination
|
101
|
-
* @param root path to the target project root
|
102
|
-
* @param config a map of configuration content and its path to be written
|
103
|
-
* @param pathMap a map of keys in the config map and their destination path
|
104
|
-
*/
|
105
|
-
|
106
|
-
|
47
|
+
exports.serializeContent = serializeContent;
|
107
48
|
async function writeFiles(root, config, pathMap) {
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
} else {
|
120
|
-
(0, _console.info)(`Skipping ${key}`);
|
49
|
+
for (const [key, content] of Object.entries(config)) {
|
50
|
+
const destination = pathMap[key];
|
51
|
+
if (!(await (0, fs_extra_1.pathExists)(destination)) ||
|
52
|
+
destination !== (0, path_1.resolve)(root, key)) {
|
53
|
+
(0, console_1.info)(`Generating ${key}`);
|
54
|
+
await (0, fs_extra_1.ensureFile)(destination);
|
55
|
+
await (0, fs_extra_1.writeFile)(destination, serializeContent(destination, content));
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
(0, console_1.info)(`Skipping ${key}`);
|
59
|
+
}
|
121
60
|
}
|
122
|
-
}
|
123
61
|
}
|
124
|
-
|
125
|
-
* link generated files to the project root
|
126
|
-
* @param root path to the target project root
|
127
|
-
* @param configurationLink map of symlinks to its real path
|
128
|
-
*/
|
129
|
-
|
130
|
-
|
62
|
+
exports.writeFiles = writeFiles;
|
131
63
|
async function linkFiles(root, configurationLink) {
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
64
|
+
for (const [file, destination] of Object.entries(configurationLink)) {
|
65
|
+
const link = (0, path_1.resolve)(root, file);
|
66
|
+
const to = (0, path_1.relative)((0, path_1.dirname)(link), destination);
|
67
|
+
if (!(await linkExists(link)) &&
|
68
|
+
!(await (0, fs_extra_1.pathExists)(link)) &&
|
69
|
+
to !== (0, path_1.basename)(to)) {
|
70
|
+
(0, console_1.info)(`Linking ${(0, path_1.relative)(root, link)} => ${to}`);
|
71
|
+
await (0, fs_extra_1.mkdir)((0, path_1.dirname)(link), { recursive: true });
|
72
|
+
await (0, fs_extra_1.symlink)(to, link);
|
73
|
+
}
|
74
|
+
else if (to !== (0, path_1.basename)(to)) {
|
75
|
+
(0, console_1.info)(`Skipping ${(0, path_1.relative)(root, link)} => ${to}`);
|
76
|
+
}
|
145
77
|
}
|
146
|
-
}
|
147
78
|
}
|
148
|
-
|
149
|
-
* unlink generated files from the project root
|
150
|
-
* @param root path to the target project root
|
151
|
-
* @param configurationLink map of symlinks to its real path
|
152
|
-
*/
|
153
|
-
|
154
|
-
|
79
|
+
exports.linkFiles = linkFiles;
|
155
80
|
async function unlinkFiles(root, configurationLink) {
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
81
|
+
for (const [name, destination] of Object.entries(configurationLink)) {
|
82
|
+
try {
|
83
|
+
const link = await (0, fs_extra_1.readlink)((0, path_1.resolve)(root, name));
|
84
|
+
const to = (0, path_1.relative)(root, destination);
|
85
|
+
if (link === to) {
|
86
|
+
(0, console_1.info)(`Removing ${name}`);
|
87
|
+
await (0, fs_extra_1.unlink)((0, path_1.resolve)(root, name));
|
88
|
+
continue;
|
89
|
+
}
|
90
|
+
}
|
91
|
+
catch (_a) {
|
92
|
+
}
|
93
|
+
(0, console_1.info)(`Skipping ${name}`);
|
167
94
|
}
|
168
|
-
|
169
|
-
(0, _console.info)(`Skipping ${name}`);
|
170
|
-
}
|
171
95
|
}
|
172
|
-
|
173
|
-
* check if path is a symlink
|
174
|
-
* @param path file path to be checked
|
175
|
-
* @returns true if it is a symlink
|
176
|
-
*/
|
177
|
-
|
178
|
-
|
96
|
+
exports.unlinkFiles = unlinkFiles;
|
179
97
|
async function linkExists(path) {
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
98
|
+
try {
|
99
|
+
await (0, fs_extra_1.lstat)(path);
|
100
|
+
return true;
|
101
|
+
}
|
102
|
+
catch (_a) {
|
103
|
+
return false;
|
104
|
+
}
|
187
105
|
}
|
188
|
-
//# sourceMappingURL=
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEscUNBQStCO0FBQy9CLHVDQVVrQjtBQUNsQixxQ0FBcUM7QUFDckMsK0JBQXFFO0FBVXJFLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQztBQVFWLEtBQUssVUFBVSxXQUFXLENBSS9CLEtBR21CLEVBQ25CLE9BQWlDO0lBRWpDLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFO1FBQy9CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3ZCO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUEscUJBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ2pFLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBTSxDQUFDO0tBQ3JDO1NBQU07UUFDTCxPQUFPLEtBQVUsQ0FBQztLQUNuQjtBQUNILENBQUM7QUFqQkQsa0NBaUJDO0FBZ0JNLEtBQUssVUFBVSxRQUFRLENBQzVCLElBQVksRUFDWixnQkFBMEMsTUFBTTtJQUVoRCxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBQSxtQkFBUSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFHbEQsUUFBUSxJQUFBLGNBQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxJQUFJLGFBQWEsRUFBRSxFQUFFO1FBQzVDLEtBQUssT0FBTztZQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQTRCLENBQUM7UUFDeEQsS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLE1BQU07WUFDVCxPQUFPLElBQUEsY0FBSSxFQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNsRDtZQUNFLE9BQU8sT0FBTyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQWhCRCw0QkFnQkM7QUFRRCxTQUFnQixnQkFBZ0Is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
|