simple-file-templater 1.0.3 → 1.0.4
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/.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 +3 -2
- package/templater.ts +26 -28
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])), 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.4",
|
4
4
|
"description": "Simple templating system for file. Pattern replacer, file name replacer...",
|
5
5
|
"main": "./dist/templater.js",
|
6
6
|
"scripts": {
|
@@ -21,7 +21,8 @@
|
|
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",
|
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])), conf[1]] as const : conf as [RegExp, string])
|
143
141
|
}
|