simple-file-templater 1.0.3 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- package/.DS_Store +0 -0
- package/dist/templater.d.ts +2 -2
- package/dist/templater.js +15 -23
- package/dist/templater.js.map +1 -1
- package/package.json +5 -4
- package/templater.ts +26 -28
- package/tsconfig.json +0 -9
package/.DS_Store
CHANGED
Binary file
|
package/dist/templater.d.ts
CHANGED
@@ -9,9 +9,9 @@ to: string,
|
|
9
9
|
* * OR [[/myRegExp/g, 'myString'], ['myString1', 'myString2']...]
|
10
10
|
* * DON'T forget the g flag when using regexps
|
11
11
|
*/
|
12
|
-
replaceInFiles?:
|
12
|
+
replaceInFiles?: [string: string | RegExp, replacement: string][],
|
13
13
|
/** same as above but for fileNames (only valid when copying folders) */
|
14
|
-
replaceInFileNames?:
|
14
|
+
replaceInFileNames?: [string: string | RegExp, replacement: string][],
|
15
15
|
/** regexp array to check against path. Eg: /node_module/ <= file paths that includes the word node_module will not be taken in account */
|
16
16
|
ignorePaths?: any[]): string[];
|
17
17
|
/** Inject content into a file at specified place */
|
package/dist/templater.js
CHANGED
@@ -7,6 +7,7 @@ exports.fileToLines = exports.injector = exports.templater = void 0;
|
|
7
7
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
8
8
|
const path_1 = __importDefault(require("path"));
|
9
9
|
const fast_glob_1 = __importDefault(require("fast-glob"));
|
10
|
+
const topkat_utils_1 = require("topkat-utils");
|
10
11
|
/** Get the content of a folder and move it with option to replace in files or in fileNames as you go */
|
11
12
|
function templater(
|
12
13
|
/** absolute url of template (it can be a folder) */
|
@@ -24,14 +25,9 @@ replaceInFileNames = [],
|
|
24
25
|
/** regexp array to check against path. Eg: /node_module/ <= file paths that includes the word node_module will not be taken in account */
|
25
26
|
ignorePaths = []) {
|
26
27
|
try {
|
27
|
-
err500IfNotSet({ from, to, varz: replaceInFiles });
|
28
|
-
|
29
|
-
|
30
|
-
replaceInFiles = Object.entries(replaceInFiles);
|
31
|
-
replaceInFiles.forEach(([toReplace, replacer], i, arr) => toReplace instanceof RegExp || (arr[i] = [new RegExp(toReplace, 'g'), replacer]));
|
32
|
-
if (isObject(replaceInFileNames))
|
33
|
-
replaceInFileNames = Object.entries(replaceInFileNames);
|
34
|
-
replaceInFileNames.forEach(([toReplace, replacer], i, arr) => toReplace instanceof RegExp || (arr[i] = [new RegExp(toReplace, 'g'), replacer]));
|
28
|
+
(0, topkat_utils_1.err500IfNotSet)({ from, to, varz: replaceInFiles });
|
29
|
+
const replaceInFilesParsed = parseRegexpArray(replaceInFiles);
|
30
|
+
const replaceInFileNameArr = parseRegexpArray(replaceInFileNames);
|
35
31
|
const createdPath = [];
|
36
32
|
let files = [from];
|
37
33
|
const templateIsDirectory = fs_extra_1.default.statSync(from).isDirectory();
|
@@ -50,11 +46,11 @@ ignorePaths = []) {
|
|
50
46
|
if (templateIsDirectory) {
|
51
47
|
const [, filePath, fileName] = fileFullPath.match(/(.*)\/(.*)$/) || [];
|
52
48
|
const newFilePath = filePath.replace(from, to);
|
53
|
-
const newFileName =
|
49
|
+
const newFileName = replaceInFileNameArr.reduce((str, [toReplace, replacer]) => str.replace(toReplace, replacer), fileName);
|
54
50
|
newFileFullPath = path_1.default.join(newFilePath, newFileName);
|
55
51
|
}
|
56
52
|
const oldFileContent = fs_extra_1.default.readFileSync(fileFullPath, 'utf-8');
|
57
|
-
const newFileContent =
|
53
|
+
const newFileContent = replaceInFilesParsed.reduce((str, [toReplace, replacer]) => str.replace(toReplace, replacer), oldFileContent);
|
58
54
|
fs_extra_1.default.outputFileSync(newFileFullPath, newFileContent);
|
59
55
|
createdPath.push(newFileFullPath);
|
60
56
|
}
|
@@ -74,7 +70,7 @@ filePath, data,
|
|
74
70
|
*/
|
75
71
|
after) {
|
76
72
|
try {
|
77
|
-
err500IfNotSet({ filePath, data, after });
|
73
|
+
(0, topkat_utils_1.err500IfNotSet)({ filePath, data, after });
|
78
74
|
if (!fs_extra_1.default.existsSync(filePath))
|
79
75
|
throw 'file for injection do not exist';
|
80
76
|
const fileContent = fs_extra_1.default.readFileSync(filePath, 'utf-8');
|
@@ -111,20 +107,20 @@ ignoreInlineComments = true,
|
|
111
107
|
/** Will trime each line */
|
112
108
|
trim = true) {
|
113
109
|
try {
|
114
|
-
err500IfNotSet({ filePath });
|
110
|
+
(0, topkat_utils_1.err500IfNotSet)({ filePath });
|
115
111
|
if (!fs_extra_1.default.existsSync(filePath))
|
116
112
|
throw 'file for injection do not exist';
|
117
113
|
let fileContent = fs_extra_1.default.readFileSync(filePath, 'utf-8');
|
118
114
|
if (ignoreInlineComments)
|
119
115
|
fileContent = fileContent.replace(/\/\/.*/g, '<$COMMENT$>');
|
120
116
|
let lines, lineBegin = 0;
|
121
|
-
if (isset(regexp) && regexp instanceof RegExp) {
|
117
|
+
if ((0, topkat_utils_1.isset)(regexp) && regexp instanceof RegExp) {
|
122
118
|
fileContent.replace(regexp, (f, m1, index, chain) => {
|
123
119
|
const linesBefore = chain.substring(0, index).split('\n');
|
124
120
|
lineBegin = linesBefore.length;
|
125
121
|
lines = m1.split('\n');
|
126
122
|
});
|
127
|
-
if (!isset(lines))
|
123
|
+
if (!(0, topkat_utils_1.isset)(lines))
|
128
124
|
throw `regexp doesn't match the subject string`;
|
129
125
|
}
|
130
126
|
else {
|
@@ -141,14 +137,10 @@ trim = true) {
|
|
141
137
|
}
|
142
138
|
}
|
143
139
|
exports.fileToLines = fileToLines;
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
function
|
148
|
-
|
149
|
-
Object.entries(objectWithVarDescription).forEach(([name, value], i) => {
|
150
|
-
if (!isset(value))
|
151
|
-
throw new Error(`Param number ${i} (${name}) is not set in templater function.`);
|
152
|
-
});
|
140
|
+
// ╦ ╦ ╔══╗ ╦ ╔══╗ ╔══╗ ╔══╗ ╔═══
|
141
|
+
// ╠══╣ ╠═ ║ ╠══╝ ╠═ ╠═╦╝ ╚══╗
|
142
|
+
// ╩ ╩ ╚══╝ ╚══╝ ╩ ╚══╝ ╩ ╚ ═══╝
|
143
|
+
function parseRegexpArray(arr) {
|
144
|
+
return arr.map((conf) => typeof conf[0] === 'string' ? [new RegExp((0, topkat_utils_1.escapeRegexp)(conf[0]), 'g'), conf[1]] : conf);
|
153
145
|
}
|
154
146
|
//# sourceMappingURL=templater.js.map
|
package/dist/templater.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"templater.js","sourceRoot":"","sources":["../templater.ts"],"names":[],"mappings":";;;;;;
|
1
|
+
{"version":3,"file":"templater.js","sourceRoot":"","sources":["../templater.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "simple-file-templater",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.5",
|
4
4
|
"description": "Simple templating system for file. Pattern replacer, file name replacer...",
|
5
5
|
"main": "./dist/templater.js",
|
6
6
|
"scripts": {
|
@@ -9,7 +9,7 @@
|
|
9
9
|
"bump:minor": "node node_modules/bump-simple/bump-simple.js --minor",
|
10
10
|
"bump:patch": "node node_modules/bump-simple/bump-simple.js --patch"
|
11
11
|
},
|
12
|
-
"author": "
|
12
|
+
"author": "@topkat",
|
13
13
|
"license": "ISC",
|
14
14
|
"repository": {
|
15
15
|
"type": "git",
|
@@ -21,11 +21,12 @@
|
|
21
21
|
"homepage": "https://github.com/top-kat/simple-file-templater",
|
22
22
|
"dependencies": {
|
23
23
|
"fast-glob": "^3.0.4",
|
24
|
-
"fs-extra": "^8.1.0"
|
24
|
+
"fs-extra": "^8.1.0",
|
25
|
+
"topkat-utils": "^1.2.106"
|
25
26
|
},
|
26
27
|
"devDependencies": {
|
27
28
|
"@types/node": "^22.10.1",
|
28
|
-
"bump-simple": "^1.0.
|
29
|
+
"bump-simple": "^1.0.27"
|
29
30
|
},
|
30
31
|
"publishConfig": {
|
31
32
|
"access": "public"
|
package/templater.ts
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
|
2
|
+
|
1
3
|
import fs from 'fs-extra'
|
2
4
|
import path from 'path'
|
3
5
|
import fg from 'fast-glob'
|
4
6
|
|
7
|
+
import { isset, err500IfNotSet, escapeRegexp } from 'topkat-utils'
|
5
8
|
|
6
9
|
/** Get the content of a folder and move it with option to replace in files or in fileNames as you go */
|
7
10
|
export function templater(
|
@@ -14,46 +17,44 @@ export function templater(
|
|
14
17
|
* * OR [[/myRegExp/g, 'myString'], ['myString1', 'myString2']...]
|
15
18
|
* * DON'T forget the g flag when using regexps
|
16
19
|
*/
|
17
|
-
replaceInFiles = [],
|
20
|
+
replaceInFiles: [string: string | RegExp, replacement: string][] = [],
|
18
21
|
/** same as above but for fileNames (only valid when copying folders) */
|
19
|
-
replaceInFileNames = [],
|
22
|
+
replaceInFileNames: [string: string | RegExp, replacement: string][] = [],
|
20
23
|
/** regexp array to check against path. Eg: /node_module/ <= file paths that includes the word node_module will not be taken in account */
|
21
24
|
ignorePaths = []
|
22
25
|
) {
|
23
26
|
try {
|
24
27
|
err500IfNotSet({ from, to, varz: replaceInFiles })
|
25
28
|
|
26
|
-
|
27
|
-
|
28
|
-
replaceInFiles.forEach(([toReplace, replacer], i, arr) => toReplace instanceof RegExp || (arr[i] = [new RegExp(toReplace, 'g'), replacer]));
|
29
|
-
if (isObject(replaceInFileNames)) replaceInFileNames = Object.entries(replaceInFileNames);
|
30
|
-
replaceInFileNames.forEach(([toReplace, replacer], i, arr) => toReplace instanceof RegExp || (arr[i] = [new RegExp(toReplace, 'g'), replacer]));
|
29
|
+
const replaceInFilesParsed = parseRegexpArray(replaceInFiles)
|
30
|
+
const replaceInFileNameArr = parseRegexpArray(replaceInFileNames)
|
31
31
|
|
32
32
|
const createdPath = [] as string[]
|
33
33
|
|
34
34
|
let files = [from]
|
35
|
-
const templateIsDirectory = fs.statSync(from).isDirectory()
|
35
|
+
const templateIsDirectory = fs.statSync(from).isDirectory()
|
36
|
+
|
36
37
|
// get directory structure
|
37
38
|
if (templateIsDirectory) {
|
38
|
-
if (fs.existsSync(to) && !fs.statSync(to).isDirectory()) throw '"from" argument is a directory but "to" arg is a file'
|
39
|
-
files = fg.sync(`${from}/**/*`, { dot: true })
|
40
|
-
} else if (fs.existsSync(to) && fs.statSync(to).isDirectory()) throw '"to" argument is a directory but "from" arg is a file'
|
39
|
+
if (fs.existsSync(to) && !fs.statSync(to).isDirectory()) throw '"from" argument is a directory but "to" arg is a file'
|
40
|
+
files = fg.sync(`${from}/**/*`, { dot: true })
|
41
|
+
} else if (fs.existsSync(to) && fs.statSync(to).isDirectory()) throw '"to" argument is a directory but "from" arg is a file'
|
41
42
|
|
42
43
|
for (const fileFullPath of files) {
|
43
|
-
if (ignorePaths.some(reg => reg.test(fileFullPath))) continue
|
44
|
-
let newFileFullPath = to
|
44
|
+
if (ignorePaths.some(reg => reg.test(fileFullPath))) continue
|
45
|
+
let newFileFullPath = to
|
45
46
|
if (templateIsDirectory) {
|
46
|
-
const [, filePath, fileName] = fileFullPath.match(/(.*)\/(.*)$/) || []
|
47
|
+
const [, filePath, fileName] = fileFullPath.match(/(.*)\/(.*)$/) || []
|
47
48
|
const newFilePath = filePath.replace(from, to);
|
48
|
-
const newFileName =
|
49
|
-
newFileFullPath = path.join(newFilePath, newFileName)
|
49
|
+
const newFileName = replaceInFileNameArr.reduce((str, [toReplace, replacer]) => str.replace(toReplace, replacer), fileName)
|
50
|
+
newFileFullPath = path.join(newFilePath, newFileName)
|
50
51
|
}
|
51
|
-
const oldFileContent = fs.readFileSync(fileFullPath, 'utf-8')
|
52
|
-
const newFileContent =
|
52
|
+
const oldFileContent = fs.readFileSync(fileFullPath, 'utf-8')
|
53
|
+
const newFileContent = replaceInFilesParsed.reduce((str, [toReplace, replacer]) => str.replace(toReplace, replacer), oldFileContent)
|
53
54
|
|
54
|
-
fs.outputFileSync(newFileFullPath, newFileContent)
|
55
|
+
fs.outputFileSync(newFileFullPath, newFileContent)
|
55
56
|
|
56
|
-
createdPath.push(newFileFullPath)
|
57
|
+
createdPath.push(newFileFullPath)
|
57
58
|
}
|
58
59
|
|
59
60
|
return createdPath
|
@@ -131,13 +132,10 @@ export function fileToLines(
|
|
131
132
|
}
|
132
133
|
|
133
134
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
function isObject(obj) { return isset(obj) && typeof obj === 'object' && Object.getPrototypeOf(obj) === Object.prototype; }
|
135
|
+
// ╦ ╦ ╔══╗ ╦ ╔══╗ ╔══╗ ╔══╗ ╔═══
|
136
|
+
// ╠══╣ ╠═ ║ ╠══╝ ╠═ ╠═╦╝ ╚══╗
|
137
|
+
// ╩ ╩ ╚══╝ ╚══╝ ╩ ╚══╝ ╩ ╚ ═══╝
|
138
138
|
|
139
|
-
function
|
140
|
-
|
141
|
-
if (!isset(value)) throw new Error(`Param number ${i} (${name}) is not set in templater function.`)
|
142
|
-
})
|
139
|
+
function parseRegexpArray(arr: [string | RegExp, string][]) {
|
140
|
+
return arr.map((conf) => typeof conf[0] === 'string' ? [new RegExp(escapeRegexp(conf[0]), 'g'), conf[1]] as const : conf as [RegExp, string])
|
143
141
|
}
|
package/tsconfig.json
CHANGED