|
1 |
| -var exec = require("exec-sh"); |
2 |
| -var replace = require('replace'); |
| 1 | +const exec = require("exec-sh"); |
| 2 | +const replace = require('replace'); |
| 3 | +const fs = require('fs'); |
3 | 4 | /**
|
4 | 5 | * Factory of generates
|
5 | 6 | */
|
@@ -31,53 +32,70 @@ class Skeleton {
|
31 | 32 | `cd ${this.package_name}`,
|
32 | 33 | `rm -rf .git/`
|
33 | 34 | ];
|
34 |
| - |
35 |
| - const packagejson = `${this.package_name}/package.json`; |
36 |
| - const webpack = `${this.package_name}/webpack.config.babel.js`; |
37 |
| - const readme = `${this.package_name}/README.md`; |
38 |
| - |
39 | 35 | exec(commands, null, err => {
|
40 | 36 | if (err) {
|
41 | 37 | console.log("Exit code: ", err.code);
|
42 | 38 | return;
|
43 | 39 | }
|
| 40 | + let replaceFiles = [...this.filesToReplace()]; |
44 | 41 | replace({
|
45 | 42 | regex: '--pkg-name',
|
46 | 43 | replacement: this.package_name,
|
47 |
| - paths: [packagejson, readme, webpack], |
| 44 | + paths: replaceFiles, |
48 | 45 | recursive: true,
|
49 | 46 | silent: true,
|
50 | 47 | });
|
51 | 48 | replace({
|
52 | 49 | regex: '--username',
|
53 | 50 | replacement: this.username,
|
54 |
| - paths: [packagejson, readme], |
| 51 | + paths: replaceFiles, |
55 | 52 | recursive: true,
|
56 | 53 | silent: true,
|
57 | 54 | });
|
58 | 55 | replace({
|
59 | 56 | regex: '--author-name',
|
60 | 57 | replacement: this.name,
|
61 |
| - paths: [packagejson, readme], |
| 58 | + paths: replaceFiles, |
62 | 59 | recursive: true,
|
63 | 60 | silent: true,
|
64 | 61 | });
|
65 | 62 | replace({
|
66 | 63 | regex: '--author-email',
|
67 | 64 | replacement: this.email,
|
68 |
| - paths: [packagejson], |
| 65 | + paths: replaceFiles, |
69 | 66 | recursive: true,
|
70 | 67 | silent: true,
|
71 | 68 | });
|
72 | 69 | replace({
|
73 | 70 | regex: '--author-url',
|
74 | 71 | replacement: this.url,
|
75 |
| - paths: [packagejson, readme], |
| 72 | + paths: replaceFiles, |
76 | 73 | recursive: true,
|
77 | 74 | silent: true,
|
78 | 75 | });
|
79 | 76 | });
|
80 | 77 | }
|
| 78 | + /** |
| 79 | + * |
| 80 | + * |
| 81 | + * @returns |
| 82 | + * @memberof Skeleton |
| 83 | + */ |
| 84 | + filesToReplace() { |
| 85 | + let files = []; |
| 86 | + [ |
| 87 | + `${this.package_name}/package.json`, |
| 88 | + `${this.package_name}/webpack.config.babel.js`, |
| 89 | + `${this.package_name}/README.md`, |
| 90 | + `${this.package_name}/setup.sh`, |
| 91 | + `${this.package_name}/docker-compose.yml`, |
| 92 | + ].forEach(filename => { |
| 93 | + if (fs.existsSync(filename)) { |
| 94 | + files.push(filename); |
| 95 | + } |
| 96 | + }); |
| 97 | + return files; |
| 98 | + } |
81 | 99 | }
|
82 | 100 |
|
83 | 101 | module.exports = Skeleton;
|
0 commit comments