simple-scaffold 1.0.0-alpha.5 → 1.0.0-alpha.6
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 +22 -19
- package/cmd.js +15 -1
- package/cmd.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/scaffold.js +27 -15
- package/scaffold.js.map +1 -1
- package/types.d.ts +10 -0
- package/types.js +9 -0
- package/types.js.map +1 -1
- package/utils.d.ts +3 -2
- package/utils.js +20 -4
- package/utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -43,15 +43,18 @@ Options:
|
|
|
43
43
|
--data|-d Add custom data to the templates. By default, only your app
|
|
44
44
|
name is included.
|
|
45
45
|
|
|
46
|
-
--create-sub-folder|-s Create subfolder with the input name (default:
|
|
47
|
-
false)
|
|
46
|
+
--create-sub-folder|-s Create subfolder with the input name (default: false)
|
|
48
47
|
|
|
49
|
-
--quiet|-q Suppress output logs (default:
|
|
50
|
-
false)
|
|
48
|
+
--quiet|-q Suppress output logs (Same as --verbose 0) (default: false)
|
|
51
49
|
|
|
52
|
-
--
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
--verbose|-v Determine amount of logs to display. The values are: 0 (none)
|
|
51
|
+
| 1 (debug) | 2 (info) | 3 (warn) | 4 (error). The provided level
|
|
52
|
+
will display messages of the same level or higher.
|
|
53
|
+
(default: 2)
|
|
54
|
+
|
|
55
|
+
--dry-run|-dr Don't emit files. This is good for testing your scaffolds and
|
|
56
|
+
making sure they don't fail, without having to write actual file
|
|
57
|
+
contents or create directories. (default: false)
|
|
55
58
|
```
|
|
56
59
|
|
|
57
60
|
You can also add this as a script in your `package.json`:
|
|
@@ -73,7 +76,7 @@ The config takes similar arguments to the command line:
|
|
|
73
76
|
```javascript
|
|
74
77
|
const SimpleScaffold = require("simple-scaffold").default
|
|
75
78
|
|
|
76
|
-
const scaffold =
|
|
79
|
+
const scaffold = SimpleScaffold({
|
|
77
80
|
name: "component",
|
|
78
81
|
templates: [path.join(__dirname, "scaffolds", "component")],
|
|
79
82
|
output: path.join(__dirname, "src", "components"),
|
|
@@ -81,7 +84,7 @@ const scaffold = new SimpleScaffold({
|
|
|
81
84
|
locals: {
|
|
82
85
|
property: "value",
|
|
83
86
|
},
|
|
84
|
-
})
|
|
87
|
+
})
|
|
85
88
|
```
|
|
86
89
|
|
|
87
90
|
The exception in the config is that `output`, when used in Node directly, may also be passed a
|
|
@@ -120,19 +123,19 @@ Your `data` will be pre-populated with the following:
|
|
|
120
123
|
|
|
121
124
|
Simple-Scaffold provides some built-in text transformation filters usable by handleBars.
|
|
122
125
|
|
|
123
|
-
For example, you may use `{{ name
|
|
126
|
+
For example, you may use `{{ snakeCase name }}` inside a template file or filename, and it will
|
|
124
127
|
replace `My Name` with `my_name` when producing the final value.
|
|
125
128
|
|
|
126
129
|
Here are the built-in helpers available for use:
|
|
127
130
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
{{ name |
|
|
131
|
-
{{ name
|
|
132
|
-
{{ name |
|
|
133
|
-
{{ name |
|
|
134
|
-
{{ name |
|
|
135
|
-
|
|
131
|
+
| Helper name | Example code | Example output |
|
|
132
|
+
| ----------- | ----------------------- | -------------- |
|
|
133
|
+
| camelCase | `{{ camelCase name }}` | myName |
|
|
134
|
+
| snakeCase | `{{ snakeCase name }}` | my_name |
|
|
135
|
+
| startCase | `{{ startCase name }}` | My Name |
|
|
136
|
+
| kebabCase | `{{ kebabCase name }}` | my-name |
|
|
137
|
+
| hyphenCase | `{{ hyphenCase name }}` | my-name |
|
|
138
|
+
| pascalCase | `{{ pascalCase name }}` | MyName |
|
|
136
139
|
|
|
137
140
|
**Note:** These helpers are available for any data property, not exclusive to `name`.
|
|
138
141
|
|
|
@@ -202,7 +205,7 @@ const React = require("react")
|
|
|
202
205
|
|
|
203
206
|
module.exports = class MyComponent extends React.Component {
|
|
204
207
|
render() {
|
|
205
|
-
<div className="
|
|
208
|
+
<div className="myClassName">MyComponent Component</div>
|
|
206
209
|
}
|
|
207
210
|
}
|
|
208
211
|
```
|
package/cmd.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const scaffold_1 = __importDefault(require("./scaffold"));
|
|
7
7
|
const massarg_1 = __importDefault(require("massarg"));
|
|
8
|
+
const _1 = require(".");
|
|
8
9
|
massarg_1.default()
|
|
9
10
|
.main(scaffold_1.default)
|
|
10
11
|
.option({
|
|
@@ -46,7 +47,20 @@ massarg_1.default()
|
|
|
46
47
|
defaultValue: false,
|
|
47
48
|
boolean: true,
|
|
48
49
|
})
|
|
49
|
-
.option({
|
|
50
|
+
.option({
|
|
51
|
+
aliases: ["q"],
|
|
52
|
+
name: "quiet",
|
|
53
|
+
description: "Suppress output logs (Same as --verbose 0)",
|
|
54
|
+
defaultValue: false,
|
|
55
|
+
boolean: true,
|
|
56
|
+
})
|
|
57
|
+
.option({
|
|
58
|
+
aliases: ["v"],
|
|
59
|
+
name: "verbose",
|
|
60
|
+
description: "Determine amount of logs to display. The values are: 0 (none) | 1 (debug) | 2 (info) | 3 (warn) | 4 (error). The provided level will display messages of the same level or higher.",
|
|
61
|
+
defaultValue: _1.LogLevel.Info,
|
|
62
|
+
parse: Number,
|
|
63
|
+
})
|
|
50
64
|
.option({
|
|
51
65
|
aliases: ["dr"],
|
|
52
66
|
name: "dry-run",
|
package/cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../src/cmd.ts"],"names":[],"mappings":";;;;;AAAA,0DAAiC;AACjC,sDAA6B;
|
|
1
|
+
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../src/cmd.ts"],"names":[],"mappings":";;;;;AAAA,0DAAiC;AACjC,sDAA6B;AAE7B,wBAA4B;AAE5B,iBAAO,EAA2D;KAC/D,IAAI,CAAC,kBAAQ,CAAC;KACd,MAAM,CAAC;IACN,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,SAAS,EAAE,IAAI;IACf,WAAW,EACT,8HAA8H;CACjI,CAAC;KACD,MAAM,CAAC;IACN,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,WAAW,EACT,uGAAuG;CAC1G,CAAC;KACD,MAAM,CAAC;IACN,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,WAAW,EACT,oHAAoH;QACpH,sDAAsD;IACxD,YAAY,EAAE,EAAE;IAChB,KAAK,EAAE,IAAI;CACZ,CAAC;KACD,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,8DAA8D;IAC3E,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,IAAI;CACd,CAAC;KACD,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,+EAA+E;IAC5F,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CAC5B,CAAC;KACD,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,sCAAsC;IACnD,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,IAAI;CACd,CAAC;KACD,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,IAAI;CACd,CAAC;KACD,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,IAAI,EAAE,SAAS;IACf,WAAW,EACT,oLAAoL;IACtL,YAAY,EAAE,WAAQ,CAAC,IAAI;IAC3B,KAAK,EAAE,MAAM;CACd,CAAC;KACD,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,IAAI,EAAE,SAAS;IACf,WAAW,EACT,iFAAiF;QACjF,iFAAiF;IACnF,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,IAAI;CACd,CAAC;IACF,aAAa;IACb,wHAAwH;IACxH,0BAA0B;IAC1B,gBAAgB;IAChB,KAAK;KACJ,IAAI,CAAC;IACJ,OAAO,EAAE,iBAAiB;IAC1B,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,WAAW;CAC1B,CAAC;KACD,KAAK,EAAE,CAAA"}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
__exportStar(require("./scaffold"), exports);
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
17
18
|
const scaffold_1 = __importDefault(require("./scaffold"));
|
|
18
19
|
exports.default = scaffold_1.default;
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,0DAAiC;AACjC,kBAAe,kBAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,0CAAuB;AACvB,0DAAiC;AACjC,kBAAe,kBAAQ,CAAA"}
|
package/package.json
CHANGED
package/scaffold.js
CHANGED
|
@@ -10,11 +10,12 @@ const util_1 = require("util");
|
|
|
10
10
|
const fs_1 = require("fs");
|
|
11
11
|
const { readFile, writeFile } = fs_1.promises;
|
|
12
12
|
const utils_1 = require("./utils");
|
|
13
|
+
const types_1 = require("./types");
|
|
13
14
|
async function Scaffold(config) {
|
|
14
15
|
try {
|
|
15
16
|
const options = { ...config };
|
|
16
17
|
const data = { name: options.name, Name: utils_1.pascalCase(options.name), ...options.data };
|
|
17
|
-
utils_1.log(options, "
|
|
18
|
+
utils_1.log(options, types_1.LogLevel.Debug, "Full config:", {
|
|
18
19
|
name: options.name,
|
|
19
20
|
templates: options.templates,
|
|
20
21
|
output: options.output,
|
|
@@ -23,19 +24,26 @@ async function Scaffold(config) {
|
|
|
23
24
|
overwrite: options.overwrite,
|
|
24
25
|
quiet: options.quiet,
|
|
25
26
|
});
|
|
26
|
-
utils_1.log(options, "Data:", data);
|
|
27
|
+
utils_1.log(options, types_1.LogLevel.Info, "Data:", data);
|
|
27
28
|
for (let template of config.templates) {
|
|
28
29
|
try {
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (
|
|
30
|
+
const _isGlob = template.includes("*");
|
|
31
|
+
const _nonGlobTemplate = _isGlob ? utils_1.removeGlob(template) : template;
|
|
32
|
+
const _isDir = _isGlob ? false : await utils_1.isDir(template);
|
|
33
|
+
const _shouldAddGlob = !_isGlob && !_isDir;
|
|
34
|
+
if (_shouldAddGlob) {
|
|
34
35
|
template = template + "/**/*";
|
|
35
36
|
}
|
|
36
37
|
const files = await util_1.promisify(glob_1.glob)(template, { dot: true, debug: false });
|
|
37
38
|
for (const templatePath of files) {
|
|
38
39
|
if (!(await utils_1.isDir(templatePath))) {
|
|
40
|
+
const basePath = path_1.default
|
|
41
|
+
.resolve(process.cwd(), _isDir
|
|
42
|
+
? templatePath.replace(template, "")
|
|
43
|
+
: path_1.default.dirname(utils_1.removeGlob(templatePath).replace(_nonGlobTemplate, "")))
|
|
44
|
+
.replace(process.cwd() + "/", "")
|
|
45
|
+
.replace(process.cwd(), "");
|
|
46
|
+
utils_1.log(options, types_1.LogLevel.Debug, `\ntemplate: ${template}\ntemplatePath: ${templatePath}, \nbase path: ${basePath}\n`);
|
|
39
47
|
await handleTemplateFile(templatePath, basePath, options, data);
|
|
40
48
|
}
|
|
41
49
|
}
|
|
@@ -55,18 +63,22 @@ async function handleTemplateFile(templatePath, basePath, options, data) {
|
|
|
55
63
|
return new Promise(async (resolve, reject) => {
|
|
56
64
|
var _a;
|
|
57
65
|
try {
|
|
58
|
-
|
|
59
|
-
const inputPath = path_1.default.join(process.cwd(), templatePath);
|
|
66
|
+
const inputPath = path_1.default.resolve(process.cwd(), templatePath);
|
|
60
67
|
const outputPathOpt = utils_1.getOptionValueForFile(inputPath, data, options.output);
|
|
61
|
-
const outputDir = path_1.default.resolve(process.cwd(), ...[outputPathOpt, options.createSubFolder ? options.name : undefined].filter(Boolean));
|
|
68
|
+
const outputDir = path_1.default.resolve(process.cwd(), ...[outputPathOpt, basePath, options.createSubFolder ? options.name : undefined].filter(Boolean));
|
|
69
|
+
utils_1.log(options, types_1.LogLevel.Debug, `\nParsing ${templatePath}`, `\nBase path: ${basePath}`, `\nFull input path: ${inputPath}`, `\nFull output path: ${outputDir}\n`);
|
|
62
70
|
const outputPath = path_1.default.join(outputDir, utils_1.handlebarsParse(path_1.default.basename(inputPath), data));
|
|
63
71
|
const overwrite = utils_1.getOptionValueForFile(inputPath, data, (_a = options.overwrite) !== null && _a !== void 0 ? _a : false);
|
|
64
72
|
const exists = await utils_1.pathExists(outputPath);
|
|
73
|
+
utils_1.log(options, types_1.LogLevel.Debug, "Filename parsed:", utils_1.handlebarsParse(path_1.default.basename(inputPath), data), "Orig:", path_1.default.basename(inputPath)
|
|
74
|
+
// "Test:",
|
|
75
|
+
// handlebarsParse("{{name}} {{name pascalCase}}", data)
|
|
76
|
+
);
|
|
65
77
|
await utils_1.createDirIfNotExists(outputDir, options);
|
|
66
|
-
utils_1.log(options, `Writing to ${outputPath}`);
|
|
78
|
+
utils_1.log(options, types_1.LogLevel.Info, `Writing to ${outputPath}`);
|
|
67
79
|
if (!exists || overwrite) {
|
|
68
80
|
if (exists && overwrite) {
|
|
69
|
-
utils_1.log(options, `File ${outputPath} exists, overwriting`);
|
|
81
|
+
utils_1.log(options, types_1.LogLevel.Info, `File ${outputPath} exists, overwriting`);
|
|
70
82
|
}
|
|
71
83
|
const templateBuffer = await readFile(inputPath);
|
|
72
84
|
const outputContents = utils_1.handlebarsParse(templateBuffer, data);
|
|
@@ -74,12 +86,12 @@ async function handleTemplateFile(templatePath, basePath, options, data) {
|
|
|
74
86
|
await writeFile(outputPath, outputContents);
|
|
75
87
|
}
|
|
76
88
|
else {
|
|
77
|
-
utils_1.log(options, "Content output:");
|
|
78
|
-
utils_1.log(options, outputContents);
|
|
89
|
+
utils_1.log(options, types_1.LogLevel.Info, "Content output:");
|
|
90
|
+
utils_1.log(options, types_1.LogLevel.Info, outputContents);
|
|
79
91
|
}
|
|
80
92
|
}
|
|
81
93
|
else if (exists) {
|
|
82
|
-
utils_1.log(options, `File ${outputPath} already exists, skipping`);
|
|
94
|
+
utils_1.log(options, types_1.LogLevel.Info, `File ${outputPath} already exists, skipping`);
|
|
83
95
|
}
|
|
84
96
|
resolve();
|
|
85
97
|
}
|
package/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA2B;AAC3B,gDAAuB;AACvB,+BAAgC;AAChC,2BAA2C;AAC3C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,aAAU,CAAA;AAE1C,
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
package/types.d.ts
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
None = 0,
|
|
3
|
+
Debug = 1,
|
|
4
|
+
Info = 2,
|
|
5
|
+
Warning = 3,
|
|
6
|
+
Error = 4
|
|
7
|
+
}
|
|
1
8
|
export declare type FileResponseFn<T> = (fullPath: string, basedir: string, basename: string) => T;
|
|
2
9
|
export declare type FileResponse<T> = T | FileResponseFn<T>;
|
|
3
10
|
export interface ScaffoldConfig {
|
|
4
11
|
/** The name supplied for the output templates */
|
|
5
12
|
name: string;
|
|
13
|
+
/** Template input files/dirs/glob patterns to use as template input. These will be copied to the output directory. */
|
|
6
14
|
templates: string[];
|
|
15
|
+
/** Output directory to put scaffolded files in. */
|
|
7
16
|
output: FileResponse<string>;
|
|
8
17
|
createSubFolder?: boolean;
|
|
9
18
|
data?: Record<string, string>;
|
|
10
19
|
overwrite?: FileResponse<boolean>;
|
|
11
20
|
quiet?: boolean;
|
|
21
|
+
verbose?: LogLevel;
|
|
12
22
|
dryRun?: boolean;
|
|
13
23
|
}
|
|
14
24
|
export interface ScaffoldCmdConfig {
|
package/types.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogLevel = void 0;
|
|
4
|
+
var LogLevel;
|
|
5
|
+
(function (LogLevel) {
|
|
6
|
+
LogLevel[LogLevel["None"] = 0] = "None";
|
|
7
|
+
LogLevel[LogLevel["Debug"] = 1] = "Debug";
|
|
8
|
+
LogLevel[LogLevel["Info"] = 2] = "Info";
|
|
9
|
+
LogLevel[LogLevel["Warning"] = 3] = "Warning";
|
|
10
|
+
LogLevel[LogLevel["Error"] = 4] = "Error";
|
|
11
|
+
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
|
|
3
12
|
//# sourceMappingURL=types.js.map
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,6CAAW,CAAA;IACX,yCAAS,CAAA;AACX,CAAC,EANW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMnB"}
|
package/utils.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { FileResponse, ScaffoldConfig } from "./types";
|
|
2
|
+
import { FileResponse, LogLevel, ScaffoldConfig } from "./types";
|
|
3
3
|
export declare function handleErr(err: NodeJS.ErrnoException | null): void;
|
|
4
|
-
export declare function log(options: ScaffoldConfig, ...obj: any[]): void;
|
|
4
|
+
export declare function log(options: ScaffoldConfig, level: LogLevel, ...obj: any[]): void;
|
|
5
5
|
export declare function createDirIfNotExists(dir: string, options: ScaffoldConfig): Promise<void>;
|
|
6
6
|
export declare function getOptionValueForFile<T>(filePath: string, data: Record<string, string>, fn: FileResponse<T>, defaultValue?: T): T;
|
|
7
7
|
export declare function handlebarsParse(templateBuffer: Buffer | string, data: Record<string, string>): string;
|
|
8
8
|
export declare function pathExists(filePath: string): Promise<boolean>;
|
|
9
9
|
export declare function pascalCase(s: string): string;
|
|
10
10
|
export declare function isDir(path: string): Promise<boolean>;
|
|
11
|
+
export declare function removeGlob(template: string): string;
|
package/utils.js
CHANGED
|
@@ -3,15 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isDir = exports.pascalCase = exports.pathExists = exports.handlebarsParse = exports.getOptionValueForFile = exports.createDirIfNotExists = exports.log = exports.handleErr = void 0;
|
|
6
|
+
exports.removeGlob = exports.isDir = exports.pascalCase = exports.pathExists = exports.handlebarsParse = exports.getOptionValueForFile = exports.createDirIfNotExists = exports.log = exports.handleErr = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const constants_1 = require("constants");
|
|
9
|
+
const types_1 = require("./types");
|
|
9
10
|
const camelCase_1 = __importDefault(require("lodash/camelCase"));
|
|
10
11
|
const snakeCase_1 = __importDefault(require("lodash/snakeCase"));
|
|
11
12
|
const kebabCase_1 = __importDefault(require("lodash/kebabCase"));
|
|
12
13
|
const startCase_1 = __importDefault(require("lodash/startCase"));
|
|
13
14
|
const handlebars_1 = __importDefault(require("handlebars"));
|
|
14
15
|
const fs_1 = require("fs");
|
|
16
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
15
17
|
const { stat, access, mkdir } = fs_1.promises;
|
|
16
18
|
const helpers = {
|
|
17
19
|
camelCase: camelCase_1.default,
|
|
@@ -29,11 +31,21 @@ function handleErr(err) {
|
|
|
29
31
|
throw err;
|
|
30
32
|
}
|
|
31
33
|
exports.handleErr = handleErr;
|
|
32
|
-
function log(options, ...obj) {
|
|
33
|
-
|
|
34
|
+
function log(options, level, ...obj) {
|
|
35
|
+
var _a;
|
|
36
|
+
if (options.quiet || ((_a = options.verbose) !== null && _a !== void 0 ? _a : types_1.LogLevel.Info) > level) {
|
|
34
37
|
return;
|
|
35
38
|
}
|
|
36
|
-
|
|
39
|
+
const levelColor = {
|
|
40
|
+
[types_1.LogLevel.None]: "reset",
|
|
41
|
+
[types_1.LogLevel.Debug]: "blue",
|
|
42
|
+
[types_1.LogLevel.Info]: "dim",
|
|
43
|
+
[types_1.LogLevel.Warning]: "yellow",
|
|
44
|
+
[types_1.LogLevel.Error]: "red",
|
|
45
|
+
};
|
|
46
|
+
const chalkFn = chalk_1.default[levelColor[level]];
|
|
47
|
+
console["log"](...obj.map((i) => (typeof i === "object" ? chalkFn(JSON.stringify(i, undefined, 1)) : chalkFn(i))));
|
|
48
|
+
// console["log"](...obj)
|
|
37
49
|
}
|
|
38
50
|
exports.log = log;
|
|
39
51
|
async function createDirIfNotExists(dir, options) {
|
|
@@ -90,4 +102,8 @@ async function isDir(path) {
|
|
|
90
102
|
return tplStat.isDirectory();
|
|
91
103
|
}
|
|
92
104
|
exports.isDir = isDir;
|
|
105
|
+
function removeGlob(template) {
|
|
106
|
+
return template.replace(/\*/g, "").replace(/\/\//g, "/");
|
|
107
|
+
}
|
|
108
|
+
exports.removeGlob = removeGlob;
|
|
93
109
|
//# sourceMappingURL=utils.js.map
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,yCAAgC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|