@common-stack/generate-plugin 5.0.6-alpha.5 → 5.0.6-alpha.8
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/CHANGELOG.md +8 -0
- package/README.md +280 -10
- package/cde-config.json +86 -0
- package/lib/constants/index.cjs +2 -1
- package/lib/constants/index.cjs.map +1 -1
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/index.mjs +2 -1
- package/lib/constants/index.mjs.map +1 -1
- package/lib/generators/add-backend/files/CHANGELOG.md +0 -0
- package/lib/generators/add-backend/files/Dockerfile +1 -1
- package/lib/generators/add-backend/files/__tests__/test.ts.template +3 -2
- package/lib/generators/add-backend/files/package.json +2 -48
- package/lib/generators/add-backend/generator.cjs +21 -17
- package/lib/generators/add-backend/generator.cjs.map +1 -1
- package/lib/generators/add-backend/generator.d.ts +1 -0
- package/lib/generators/add-backend/generator.mjs +21 -17
- package/lib/generators/add-backend/generator.mjs.map +1 -1
- package/lib/generators/add-browser-package/files/package.json +1 -1
- package/lib/generators/add-browser-package/generator.cjs +14 -16
- package/lib/generators/add-browser-package/generator.cjs.map +1 -1
- package/lib/generators/add-browser-package/generator.d.ts +1 -0
- package/lib/generators/add-browser-package/generator.mjs +14 -16
- package/lib/generators/add-browser-package/generator.mjs.map +1 -1
- package/lib/generators/add-client-package/files/package.json +2 -3
- package/lib/generators/add-client-package/generator.cjs +14 -16
- package/lib/generators/add-client-package/generator.cjs.map +1 -1
- package/lib/generators/add-client-package/generator.d.ts +1 -0
- package/lib/generators/add-client-package/generator.mjs +14 -16
- package/lib/generators/add-client-package/generator.mjs.map +1 -1
- package/lib/generators/add-core-package/files/package.json +2 -3
- package/lib/generators/add-core-package/generator.cjs +14 -16
- package/lib/generators/add-core-package/generator.cjs.map +1 -1
- package/lib/generators/add-core-package/generator.d.ts +1 -0
- package/lib/generators/add-core-package/generator.mjs +14 -16
- package/lib/generators/add-core-package/generator.mjs.map +1 -1
- package/lib/generators/add-frontend/frameworks/chakraui/entry.client.tsx.template +30 -24
- package/lib/generators/add-frontend/frameworks/chakraui/entry.server.tsx.template +5 -8
- package/lib/generators/add-frontend/frameworks/chakraui/root.tsx.template +3 -3
- package/lib/generators/add-frontend/frameworks/tailwindui/entry.client.tsx.template +90 -0
- package/lib/generators/add-frontend/frameworks/tailwindui/entry.server.tsx.template +238 -0
- package/lib/generators/add-frontend/frameworks/tailwindui/root.tsx.template +117 -0
- package/lib/generators/add-frontend/frameworks/tailwindui/tailwind.css +3 -0
- package/lib/generators/add-frontend/generator.cjs +60 -42
- package/lib/generators/add-frontend/generator.cjs.map +1 -1
- package/lib/generators/add-frontend/generator.d.ts +1 -0
- package/lib/generators/add-frontend/generator.mjs +60 -42
- package/lib/generators/add-frontend/generator.mjs.map +1 -1
- package/lib/generators/add-frontend/schema.json +1 -1
- package/lib/generators/add-frontend/templates/package.json +18 -77
- package/lib/generators/add-frontend/templates/postcss.config.js +6 -0
- package/lib/generators/add-frontend/templates/tailwind.config.ts.template +12 -0
- package/lib/generators/add-fullstack/files/Jenkinsfile +3 -6
- package/lib/generators/add-fullstack/files/jest-mongodb-config.js +3 -2
- package/lib/generators/add-fullstack/files/jest.config.base.js +43 -4
- package/lib/generators/add-fullstack/files/jest.config.base.mjs +99 -0
- package/lib/generators/add-fullstack/files/jest.config.mongodb.mjs +3 -0
- package/lib/generators/add-fullstack/files/lint-staged.config.js +4 -1
- package/lib/generators/add-fullstack/files/nx.json +18 -13
- package/lib/generators/add-fullstack/files/package.json +12 -24
- package/lib/generators/add-fullstack/files/tools/cli/helpers/util.js +1 -1
- package/lib/generators/add-fullstack/files/tools/deploy-cli/updateLernaVersion.js +1 -1
- package/lib/generators/add-fullstack/files/tools/deploy-cli/updateYamlSettings.js +14 -15
- package/lib/generators/add-fullstack/files/tools/prettier.config.js +8 -0
- package/lib/generators/add-fullstack/files/tools/rollup/rollupPluginGenerateJson.mjs +48 -0
- package/lib/generators/add-fullstack/files/tools/rollup/rollupPluginModifyLibFiles.mjs +410 -0
- package/lib/generators/add-fullstack/files/tools/runLint.mjs +15 -0
- package/lib/generators/add-fullstack/files/tools/sortPackageJson.mjs +8 -2
- package/lib/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -0
- package/lib/generators/add-fullstack/files/tools/update-dependency-link.mjs +138 -0
- package/lib/generators/add-fullstack/files/tools/update-dependency-version.js +104 -89
- package/lib/generators/add-fullstack/files/tools/updateUtils.mjs +77 -0
- package/lib/generators/add-fullstack/generator.cjs +71 -13
- package/lib/generators/add-fullstack/generator.cjs.map +1 -1
- package/lib/generators/add-fullstack/generator.mjs +71 -13
- package/lib/generators/add-fullstack/generator.mjs.map +1 -1
- package/lib/generators/add-fullstack/schema.json +9 -0
- package/lib/generators/add-fullstack/updates/index.d.ts +2 -0
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs +36 -0
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs.map +1 -0
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.d.ts +1 -0
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs +36 -0
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs.map +1 -0
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs +8 -0
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs.map +1 -0
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.d.ts +2 -0
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs +8 -0
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs.map +1 -0
- package/lib/generators/add-moleculer/files/package.json +3 -3
- package/lib/generators/add-moleculer/generator.cjs +14 -16
- package/lib/generators/add-moleculer/generator.cjs.map +1 -1
- package/lib/generators/add-moleculer/generator.d.ts +1 -0
- package/lib/generators/add-moleculer/generator.mjs +14 -16
- package/lib/generators/add-moleculer/generator.mjs.map +1 -1
- package/lib/generators/add-server-package/files/package.json +2 -2
- package/lib/generators/add-server-package/generator.cjs +14 -16
- package/lib/generators/add-server-package/generator.cjs.map +1 -1
- package/lib/generators/add-server-package/generator.d.ts +1 -0
- package/lib/generators/add-server-package/generator.mjs +14 -16
- package/lib/generators/add-server-package/generator.mjs.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.mjs +1 -1
- package/package.json +3 -2
- package/src/constants/index.ts +2 -1
- package/src/generators/add-backend/generator.ts +8 -4
- package/src/generators/add-browser-package/generator.ts +7 -6
- package/src/generators/add-client-package/generator.ts +7 -6
- package/src/generators/add-core-package/generator.ts +7 -6
- package/src/generators/add-frontend/frameworks/tailwindui/entry.client.tsx.template +90 -0
- package/src/generators/add-frontend/frameworks/tailwindui/entry.server.tsx.template +238 -0
- package/src/generators/add-frontend/frameworks/tailwindui/root.tsx.template +117 -0
- package/src/generators/add-frontend/frameworks/tailwindui/tailwind.css +3 -0
- package/src/generators/add-frontend/generator.ts +24 -2
- package/src/generators/add-frontend/schema.json +1 -1
- package/src/generators/add-fullstack/files/jest-mongodb-config.js +3 -2
- package/src/generators/add-fullstack/files/jest.config copy.js +27 -0
- package/src/generators/add-fullstack/files/jest.config.base.js +43 -4
- package/src/generators/add-fullstack/files/jest.config.base.mjs +99 -0
- package/src/generators/add-fullstack/files/jest.config.mongodb.mjs +3 -0
- package/src/generators/add-fullstack/files/lint-staged.config.js +4 -1
- package/src/generators/add-fullstack/files/nx.json +18 -13
- package/src/generators/add-fullstack/files/tools/cli/helpers/util.js +1 -1
- package/src/generators/add-fullstack/files/tools/deploy-cli/updateLernaVersion.js +1 -1
- package/src/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
- package/src/generators/add-fullstack/files/tools/prettier.config.js +8 -0
- package/src/generators/add-fullstack/files/tools/rollup/rollupPluginGenerateJson.mjs +48 -0
- package/src/generators/add-fullstack/files/tools/rollup/rollupPluginModifyLibFiles.mjs +410 -0
- package/src/generators/add-fullstack/files/tools/runLint.mjs +15 -0
- package/src/generators/add-fullstack/files/tools/sortPackageJson.mjs +0 -1
- package/src/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -0
- package/src/generators/add-fullstack/files/tools/update-dependency-link.mjs +138 -0
- package/src/generators/add-fullstack/files/tools/update-dependency-version.js +104 -89
- package/src/generators/add-fullstack/files/tools/updateUtils.mjs +77 -0
- package/src/generators/add-fullstack/generator.ts +83 -1
- package/src/generators/add-fullstack/schema.d.ts +1 -0
- package/src/generators/add-fullstack/schema.json +4 -0
- package/src/generators/add-moleculer/files/package.json +1 -1
- package/src/generators/add-moleculer/generator.ts +7 -6
- package/src/generators/add-server-package/generator.ts +7 -6
- package/lib/generators/add-fullstack/files/tools/update-dependency-link.js +0 -107
- package/src/generators/add-fullstack/files/tools/update-dependency-link.js +0 -107
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import glob from 'glob';
|
|
2
|
+
import { resolve, dirname, relative } from 'path';
|
|
3
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
4
|
+
import simpleGit from 'simple-git';
|
|
5
|
+
import { runLintStaged } from './runLint.mjs';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
|
|
11
|
+
// matching prettier format
|
|
12
|
+
const JSON_SPACING = 4;
|
|
13
|
+
const ADD_END_NEWLINE = true; // Set to true to add a newline at the end of the file
|
|
14
|
+
|
|
15
|
+
const git = simpleGit();
|
|
16
|
+
|
|
17
|
+
const monorepoRoot = resolve(__dirname, '..');
|
|
18
|
+
|
|
19
|
+
const findPackageJsonFiles = () => {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
glob(
|
|
22
|
+
`${monorepoRoot}/+(servers|portable-devices|packages|packages-modules)/**/package.json`,
|
|
23
|
+
{ onlyFiles: true, ignore: '**/node_modules/**' },
|
|
24
|
+
(err, files) => {
|
|
25
|
+
if (err) reject(`Unable to scan directory: ${err}`);
|
|
26
|
+
resolve(files);
|
|
27
|
+
},
|
|
28
|
+
);
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const buildPackageMap = async () => {
|
|
33
|
+
const packageJsonFiles = await findPackageJsonFiles();
|
|
34
|
+
const packageMap = new Map();
|
|
35
|
+
|
|
36
|
+
packageJsonFiles.forEach((file) => {
|
|
37
|
+
const packageJson = JSON.parse(readFileSync(file, 'utf8'));
|
|
38
|
+
if (packageJson.name) {
|
|
39
|
+
packageMap.set(packageJson.name, {
|
|
40
|
+
path: dirname(file),
|
|
41
|
+
version: packageJson.version,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return packageMap;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const searchAndUpdate = (dependencies, filePath, obj, packageMap) => {
|
|
50
|
+
let modified = false;
|
|
51
|
+
|
|
52
|
+
for (const key in dependencies) {
|
|
53
|
+
if (packageMap.has(key)) {
|
|
54
|
+
const targetDir = packageMap.get(key).path;
|
|
55
|
+
const relativePath = `link:${relative(dirname(filePath), targetDir)}`;
|
|
56
|
+
|
|
57
|
+
if (dependencies[key] !== relativePath) {
|
|
58
|
+
dependencies[key] = relativePath;
|
|
59
|
+
modified = true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (modified) {
|
|
65
|
+
// Write the updated package.json back to disk with or without a newline at the end
|
|
66
|
+
let formattedJson = JSON.stringify(obj, null, JSON_SPACING);
|
|
67
|
+
if (ADD_END_NEWLINE) {
|
|
68
|
+
formattedJson += '\n';
|
|
69
|
+
}
|
|
70
|
+
writeFileSync(filePath, formattedJson, 'utf8');
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return modified;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const updateDependencies = async () => {
|
|
77
|
+
const packageMap = await buildPackageMap();
|
|
78
|
+
const packageJsonFiles = await findPackageJsonFiles();
|
|
79
|
+
const modifiedFiles = [];
|
|
80
|
+
|
|
81
|
+
packageJsonFiles.forEach((file) => {
|
|
82
|
+
if (!file.includes('node_modules')) {
|
|
83
|
+
try {
|
|
84
|
+
const data = readFileSync(file, 'utf8');
|
|
85
|
+
const obj = JSON.parse(data);
|
|
86
|
+
const { dependencies, peerDependencies, devDependencies } = obj;
|
|
87
|
+
|
|
88
|
+
let modified = false;
|
|
89
|
+
modified = searchAndUpdate(dependencies, file, obj, packageMap) || modified;
|
|
90
|
+
modified = searchAndUpdate(peerDependencies, file, obj, packageMap) || modified;
|
|
91
|
+
modified = searchAndUpdate(devDependencies, file, obj, packageMap) || modified;
|
|
92
|
+
|
|
93
|
+
if (modified) {
|
|
94
|
+
console.log('--PUSHING FILE=---', file);
|
|
95
|
+
modifiedFiles.push(file);
|
|
96
|
+
}
|
|
97
|
+
} catch (err) {
|
|
98
|
+
console.error(`Unable to read file ${file}: ${err.message}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
return modifiedFiles;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
updateDependencies()
|
|
107
|
+
.then((modifiedFiles) => {
|
|
108
|
+
const addArray = modifiedFiles.map((file) => `./${relative(monorepoRoot, file)}`);
|
|
109
|
+
console.log('-- Modified Files --', modifiedFiles, addArray);
|
|
110
|
+
if (addArray.length === 0) {
|
|
111
|
+
console.log('No files to stage.');
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
return git.add(addArray).then(() => git.status()); // Stage files and then check status
|
|
115
|
+
})
|
|
116
|
+
.then((status) => {
|
|
117
|
+
if (status && status.modified.length) {
|
|
118
|
+
const fileArray = status.modified.filter((element) => element.includes('package.json'));
|
|
119
|
+
const addArray = fileArray.map((element) => `./${element}`);
|
|
120
|
+
return git
|
|
121
|
+
.add(addArray)
|
|
122
|
+
.then(runLintStaged)
|
|
123
|
+
.then(() => git.status()); // Run lint-staged after adding
|
|
124
|
+
} else {
|
|
125
|
+
console.log('No changes to lint or commit.');
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
.then((status) => {
|
|
130
|
+
if (status && status.modified.length > 0) {
|
|
131
|
+
return git.commit('Updated packages to use correct versions and linked dependencies');
|
|
132
|
+
} else {
|
|
133
|
+
console.log('No changes after linting. Nothing to commit.');
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
.catch((err) => {
|
|
137
|
+
console.error(err);
|
|
138
|
+
});
|
|
@@ -1,106 +1,121 @@
|
|
|
1
|
-
/* eslint-disable jest/require-hook */
|
|
2
|
-
/* eslint-disable no-loop-func */
|
|
3
|
-
/* eslint-disable no-undef */
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
5
|
-
/* eslint-disable @typescript-eslint/no-floating-promises */
|
|
6
|
-
/* eslint-disable no-restricted-syntax */
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
8
|
-
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
9
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
10
|
-
/* eslint-disable @typescript-eslint/no-shadow */
|
|
11
|
-
/* eslint-disable no-console */
|
|
12
|
-
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
13
|
-
/* eslint-disable consistent-return */
|
|
14
|
-
const glob = require('glob');
|
|
15
1
|
const path = require('path');
|
|
16
2
|
const fs = require('fs');
|
|
17
|
-
|
|
18
|
-
const SERVER_FOLDER = './servers';
|
|
19
3
|
const simpleGit = require('simple-git');
|
|
4
|
+
const glob = require('glob');
|
|
20
5
|
|
|
21
6
|
const git = simpleGit();
|
|
7
|
+
const monorepoRoot = path.resolve(__dirname, '..');
|
|
8
|
+
|
|
9
|
+
// matching prettier format
|
|
10
|
+
const JSON_SPACING = 4;
|
|
11
|
+
const ADD_END_NEWLINE = true; // Set to true to add a newline at the end of the file
|
|
12
|
+
|
|
13
|
+
const findPackageJsonFiles = () => {
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
glob(
|
|
16
|
+
`${monorepoRoot}/+(servers|portable-devices|packages|packages-modules)/**/package.json`,
|
|
17
|
+
{ onlyFiles: true, ignore: '**/node_modules/**' },
|
|
18
|
+
(err, files) => {
|
|
19
|
+
if (err) reject(`Unable to scan directory: ${err}`);
|
|
20
|
+
resolve(files);
|
|
21
|
+
},
|
|
22
|
+
);
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const buildPackageMap = async () => {
|
|
27
|
+
const packageJsonFiles = await findPackageJsonFiles();
|
|
28
|
+
const packageMap = new Map();
|
|
29
|
+
|
|
30
|
+
packageJsonFiles.forEach((file) => {
|
|
31
|
+
const packageJson = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
32
|
+
if (packageJson.name) {
|
|
33
|
+
packageMap.set(packageJson.name, {
|
|
34
|
+
path: path.dirname(file),
|
|
35
|
+
version: packageJson.version,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
return packageMap;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const searchAndUpdate = (dependencies, filePath, obj, packageMap) => {
|
|
44
|
+
let modified = false;
|
|
22
45
|
|
|
23
|
-
const searchAndUpdate = (dependencies, filePath, obj) => {
|
|
24
|
-
const fileWrie = filePath;
|
|
25
|
-
const packageDir = path.dirname(filePath);
|
|
26
|
-
console.log('---PACKAGE DIR', packageDir);
|
|
27
46
|
for (const key in dependencies) {
|
|
28
|
-
if (dependencies[key].
|
|
47
|
+
if (dependencies[key].startsWith('link:')) {
|
|
29
48
|
const relativeDepFolder = dependencies[key].split('link:')[1];
|
|
30
|
-
|
|
31
|
-
|
|
49
|
+
const dependencyFolder = path.join(path.dirname(filePath), relativeDepFolder);
|
|
50
|
+
|
|
32
51
|
try {
|
|
33
|
-
|
|
52
|
+
const packageJsonPath = path.join(dependencyFolder, 'package.json');
|
|
53
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
54
|
+
if (dependencies[key] !== packageJson.version) {
|
|
55
|
+
dependencies[key] = packageJson.version;
|
|
56
|
+
modified = true;
|
|
57
|
+
}
|
|
34
58
|
} catch (err) {
|
|
35
|
-
|
|
36
|
-
console.log(`--- err ${err.message}`);
|
|
37
|
-
console.log(
|
|
38
|
-
`err Search for dependency of ${filePath} with package path ${relativeDepFolder} not found`,
|
|
39
|
-
);
|
|
59
|
+
console.error(`Error updating ${key} in ${filePath}: ${err.message}`);
|
|
40
60
|
throw err;
|
|
41
61
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
throw (err);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
+
} else if (packageMap.has(key)) {
|
|
63
|
+
const version = packageMap.get(key).version;
|
|
64
|
+
if (dependencies[key] !== version) {
|
|
65
|
+
dependencies[key] = version;
|
|
66
|
+
modified = true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (modified) {
|
|
72
|
+
// Write the updated package.json back to disk with or without a newline at the end
|
|
73
|
+
let formattedJson = JSON.stringify(obj, null, JSON_SPACING);
|
|
74
|
+
if (ADD_END_NEWLINE) {
|
|
75
|
+
formattedJson += '\n';
|
|
62
76
|
}
|
|
77
|
+
fs.writeFileSync(filePath, formattedJson, 'utf8');
|
|
63
78
|
}
|
|
79
|
+
|
|
80
|
+
return modified;
|
|
64
81
|
};
|
|
65
82
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
83
|
+
const updateDependencies = async () => {
|
|
84
|
+
const packageMap = await buildPackageMap();
|
|
85
|
+
const packageJsonFiles = await findPackageJsonFiles();
|
|
86
|
+
const modifiedFiles = [];
|
|
87
|
+
|
|
88
|
+
packageJsonFiles.forEach((file) => {
|
|
89
|
+
if (!file.includes('node_modules')) {
|
|
90
|
+
try {
|
|
91
|
+
const data = fs.readFileSync(file, 'utf8');
|
|
92
|
+
const obj = JSON.parse(data);
|
|
93
|
+
const { dependencies, peerDependencies, devDependencies } = obj;
|
|
94
|
+
|
|
95
|
+
let modified = false;
|
|
96
|
+
modified = searchAndUpdate(dependencies, file, obj, packageMap) || modified;
|
|
97
|
+
modified = searchAndUpdate(peerDependencies, file, obj, packageMap) || modified;
|
|
98
|
+
modified = searchAndUpdate(devDependencies, file, obj, packageMap) || modified;
|
|
99
|
+
|
|
100
|
+
if (modified) {
|
|
101
|
+
modifiedFiles.push(file);
|
|
102
|
+
}
|
|
103
|
+
} catch (err) {
|
|
104
|
+
console.error(`Unable to read file ${file}: ${err.message}`);
|
|
86
105
|
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
})
|
|
104
|
-
.catch((err) => console.error(err));
|
|
105
|
-
},
|
|
106
|
-
);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
if (modifiedFiles.length > 0) {
|
|
110
|
+
await git.add(modifiedFiles);
|
|
111
|
+
await git.commit('Updated packages to use correct versions and linked dependencies');
|
|
112
|
+
} else {
|
|
113
|
+
console.log('No changes detected');
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
updateDependencies()
|
|
118
|
+
.then(() => {
|
|
119
|
+
console.log('Dependencies updated successfully.');
|
|
120
|
+
})
|
|
121
|
+
.catch((err) => console.error(`Error in updateDependencies: ${err.message}`));
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { resolve, dirname, join } from 'path';
|
|
2
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
3
|
+
import glob from 'glob';
|
|
4
|
+
|
|
5
|
+
export const JSON_SPACING = 4;
|
|
6
|
+
export const ADD_END_NEWLINE = true; // Set to true to add a newline at the end of the file
|
|
7
|
+
|
|
8
|
+
export const monorepoRoot = resolve(dirname(import.meta.url), '..');
|
|
9
|
+
|
|
10
|
+
export const findPackageJsonFiles = () => {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
glob(
|
|
13
|
+
`${monorepoRoot}/+(servers|portable-devices|packages|packages-modules)/**/package.json`,
|
|
14
|
+
{ onlyFiles: true, ignore: '**/node_modules/**' },
|
|
15
|
+
(err, files) => {
|
|
16
|
+
if (err) reject(`Unable to scan directory: ${err}`);
|
|
17
|
+
resolve(files);
|
|
18
|
+
},
|
|
19
|
+
);
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const buildPackageMap = async () => {
|
|
24
|
+
const packageJsonFiles = await findPackageJsonFiles();
|
|
25
|
+
const packageMap = new Map();
|
|
26
|
+
|
|
27
|
+
packageJsonFiles.forEach((file) => {
|
|
28
|
+
const packageJson = JSON.parse(readFileSync(file, 'utf8'));
|
|
29
|
+
if (packageJson.name) {
|
|
30
|
+
packageMap.set(packageJson.name, {
|
|
31
|
+
path: dirname(file),
|
|
32
|
+
version: packageJson.version,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return packageMap;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const searchAndUpdate = (dependencies, filePath, obj, packageMap) => {
|
|
41
|
+
let modified = false;
|
|
42
|
+
|
|
43
|
+
for (const key in dependencies) {
|
|
44
|
+
if (dependencies[key].startsWith('link:')) {
|
|
45
|
+
const relativeDepFolder = dependencies[key].split('link:')[1];
|
|
46
|
+
const dependencyFolder = join(dirname(filePath), relativeDepFolder);
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
const packageJsonPath = join(dependencyFolder, 'package.json');
|
|
50
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
51
|
+
if (dependencies[key] !== packageJson.version) {
|
|
52
|
+
dependencies[key] = packageJson.version;
|
|
53
|
+
modified = true;
|
|
54
|
+
}
|
|
55
|
+
} catch (err) {
|
|
56
|
+
console.error(`Error updating ${key} in ${filePath}: ${err.message}`);
|
|
57
|
+
throw err;
|
|
58
|
+
}
|
|
59
|
+
} else if (packageMap.has(key)) {
|
|
60
|
+
const version = packageMap.get(key).version;
|
|
61
|
+
if (dependencies[key] !== version) {
|
|
62
|
+
dependencies[key] = version;
|
|
63
|
+
modified = true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (modified) {
|
|
69
|
+
let formattedJson = JSON.stringify(obj, null, JSON_SPACING);
|
|
70
|
+
if (ADD_END_NEWLINE) {
|
|
71
|
+
formattedJson += '\n';
|
|
72
|
+
}
|
|
73
|
+
writeFileSync(filePath, formattedJson, 'utf8');
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return modified;
|
|
77
|
+
};
|
|
@@ -1,18 +1,76 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib=require('tslib'),devkit=require('@nx/devkit'),path=require('path'),index=require('../../utils/index.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var path__namespace=/*#__PURE__*/_interopNamespaceDefault(path);function addFullstackGenerator(tree, options) {
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib=require('tslib'),devkit=require('@nx/devkit'),path=require('path'),fs=require('fs'),index=require('../../utils/index.cjs'),jenkinsfileUpdate=require('./updates/jenkinsfileUpdate.cjs'),packageJsonUpdate=require('./updates/packageJsonUpdate.cjs'),generator$2=require('../add-frontend/generator.cjs'),generator$1=require('../add-backend/generator.cjs'),generator=require('../add-moleculer/generator.cjs'),generator$5=require('../add-browser-package/generator.cjs'),generator$4=require('../add-client-package/generator.cjs'),generator$6=require('../add-core-package/generator.cjs'),generator$3=require('../add-server-package/generator.cjs');require('../../executors/update-deploy-version/executor.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var path__namespace=/*#__PURE__*/_interopNamespaceDefault(path);var fs__namespace=/*#__PURE__*/_interopNamespaceDefault(fs);function addFullstackGenerator(tree, options) {
|
|
2
2
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
3
3
|
var _a;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// projectType: 'library',
|
|
8
|
-
// sourceRoot: `${projectRoot}/src`,
|
|
9
|
-
// targets: {},
|
|
10
|
-
// });
|
|
4
|
+
const basePath = options.path || '';
|
|
5
|
+
const projectRoot = path__namespace.join(basePath, (_a = index.getValid(options.name)) !== null && _a !== void 0 ? _a : 'fullstack-pro');
|
|
6
|
+
console.log(`basePath: ${basePath}`);
|
|
11
7
|
devkit.generateFiles(tree, path__namespace.join(__dirname, 'files'), projectRoot, options);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
// Update Jenkinsfile with dynamic values
|
|
9
|
+
const jenkinsFilePath = path__namespace.join(projectRoot, 'Jenkinsfile');
|
|
10
|
+
jenkinsfileUpdate.updateJenkinsFile(jenkinsFilePath, options.name);
|
|
11
|
+
// Update package.json with the project name
|
|
12
|
+
packageJsonUpdate.updatePackageJson(tree, projectRoot, index.getValid(options.name));
|
|
16
13
|
yield devkit.formatFiles(tree);
|
|
14
|
+
if (index.isValid(options.config)) {
|
|
15
|
+
const configPath = path__namespace.resolve(basePath, index.getValid(options.config));
|
|
16
|
+
if (fs__namespace.existsSync(configPath)) {
|
|
17
|
+
try {
|
|
18
|
+
const content = String(fs__namespace.readFileSync(configPath));
|
|
19
|
+
const configs = JSON.parse(content);
|
|
20
|
+
configs.parent = projectRoot;
|
|
21
|
+
yield processConfigs(tree, configs);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
console.error('Error while reading config.', error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
17
28
|
});
|
|
18
|
-
}
|
|
29
|
+
}
|
|
30
|
+
const generateServers = (tree, parent, servers) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
|
32
|
+
const configs = serverConfig;
|
|
33
|
+
configs.name = serverName;
|
|
34
|
+
configs.directory = path__namespace.join(parent, 'servers');
|
|
35
|
+
switch (configs === null || configs === void 0 ? void 0 : configs.type) {
|
|
36
|
+
case 'frontend':
|
|
37
|
+
yield generator$2.generateFrontend(tree, configs);
|
|
38
|
+
break;
|
|
39
|
+
case 'backend':
|
|
40
|
+
yield generator$1.generateBackend(tree, configs);
|
|
41
|
+
break;
|
|
42
|
+
case 'moleculer':
|
|
43
|
+
yield generator.generateMoleculer(tree, configs);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const generatePackages = (tree, parent, packages) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
for (const [packageName, packageConfig] of Object.entries(packages)) {
|
|
50
|
+
const configs = packageConfig;
|
|
51
|
+
configs.name = packageName;
|
|
52
|
+
configs.directory = path__namespace.join(parent, 'packages');
|
|
53
|
+
switch (packageConfig === null || packageConfig === void 0 ? void 0 : packageConfig.type) {
|
|
54
|
+
case 'packages-core':
|
|
55
|
+
yield generator$6.generateCorePackage(tree, configs);
|
|
56
|
+
break;
|
|
57
|
+
case 'packages-browser':
|
|
58
|
+
yield generator$5.generateBrowserPackage(tree, configs);
|
|
59
|
+
break;
|
|
60
|
+
case 'packages-client':
|
|
61
|
+
yield generator$4.generateClientPackage(tree, configs);
|
|
62
|
+
break;
|
|
63
|
+
case 'packages-server':
|
|
64
|
+
yield generator$3.generateServerPackage(tree, configs);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
const processConfigs = (tree, configs) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
if (configs.servers) {
|
|
71
|
+
yield generateServers(tree, configs.parent, configs.servers);
|
|
72
|
+
}
|
|
73
|
+
if (configs.packages && configs.packages.modules) {
|
|
74
|
+
yield generatePackages(tree, configs.parent, configs.packages.modules);
|
|
75
|
+
}
|
|
76
|
+
});exports.addFullstackGenerator=addFullstackGenerator;exports.default=addFullstackGenerator;//# sourceMappingURL=generator.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-fullstack/generator.ts"],"sourcesContent":[null],"names":["getValid","generateFiles","
|
|
1
|
+
{"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-fullstack/generator.ts"],"sourcesContent":[null],"names":["path","getValid","generateFiles","updateJenkinsFile","updatePackageJson","formatFiles","isValid","fs","__awaiter","generateFrontend","generateBackend","generateMoleculer","generateCorePackage","generateBrowserPackage","generateClientPackage","generateServerPackage"],"mappings":"qqCAkBsB,SAAA,qBAAqB,CAAC,IAAU,EAAE,OAAoC,EAAA;;;AACxF,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;AACpC,QAAA,MAAM,WAAW,GAAGA,eAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA,EAAA,GAAAC,cAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,eAAe,CAAC,CAAC;AAEnF,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAA,CAAE,CAAC,CAAC;AAErC,QAAAC,oBAAa,CAAC,IAAI,EAAEF,eAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;;QAGzE,MAAM,eAAe,GAAGA,eAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC9D,QAAAG,mCAAiB,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;;AAGjD,QAAAC,mCAAiB,CAAC,IAAI,EAAE,WAAW,EAAEH,cAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAE7D,QAAA,MAAMI,kBAAW,CAAC,IAAI,CAAC,CAAC;AAExB,QAAA,IAAIC,aAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,MAAM,UAAU,GAAGN,eAAI,CAAC,OAAO,CAAC,QAAQ,EAAEC,cAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,YAAA,IAAIM,aAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC3B,gBAAA,IAAI;oBACA,MAAM,OAAO,GAAG,MAAM,CAACA,aAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;oBACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACpC,oBAAA,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;AAE7B,oBAAA,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;iBACvC;gBAAC,OAAO,KAAK,EAAE;AACZ,oBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;iBACvD;aACJ;SACJ;KACJ,CAAA,CAAA;AAAA,CAAA;AAGD,MAAM,eAAe,GAAG,CAAO,IAAU,EAAE,MAAc,EAAE,OAAY,KAAIC,eAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACvE,IAAA,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC9D,MAAM,OAAO,GAAQ,YAAY,CAAC;AAClC,QAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;QAC1B,OAAO,CAAC,SAAS,GAAGR,eAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjD,QAAQ,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,IAAI;AACjB,YAAA,KAAK,UAAU;AACX,gBAAA,MAAMS,4BAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACtC,MAAM;AACV,YAAA,KAAK,SAAS;AACV,gBAAA,MAAMC,2BAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACrC,MAAM;AACV,YAAA,KAAK,WAAW;AACZ,gBAAA,MAAMC,2BAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACvC,MAAM;SAGb;KACJ;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAO,IAAU,EAAE,MAAc,EAAE,QAAa,KAAIH,eAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACzE,IAAA,KAAK,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACjE,MAAM,OAAO,GAAQ,aAAa,CAAC;AACnC,QAAA,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;QAC3B,OAAO,CAAC,SAAS,GAAGR,eAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAElD,QAAS,aAAqB,aAArB,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAU,IAAI;AAChC,YAAA,KAAK,eAAe;AAChB,gBAAA,MAAMY,+BAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzC,MAAM;AACV,YAAA,KAAK,kBAAkB;AACnB,gBAAA,MAAMC,kCAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM;AACV,YAAA,KAAK,iBAAiB;AAClB,gBAAA,MAAMC,iCAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC3C,MAAM;AACV,YAAA,KAAK,iBAAiB;AAClB,gBAAA,MAAMC,iCAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC3C,MAAM;SAGb;KACJ;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,cAAc,GAAG,CAAO,IAAU,EAAE,OAAY,KAAIP,eAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACtD,IAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACjB,QAAA,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;KAChE;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC9C,QAAA,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC1E;AACL,CAAC,CAAA"}
|
|
@@ -1,18 +1,76 @@
|
|
|
1
|
-
import {__awaiter}from'tslib';import {generateFiles,
|
|
1
|
+
import {__awaiter}from'tslib';import {generateFiles,formatFiles}from'@nx/devkit';import*as path from'path';import*as fs from'fs';import {getValid,isValid}from'../../utils/index.mjs';import {updateJenkinsFile}from'./updates/jenkinsfileUpdate.mjs';import {updatePackageJson}from'./updates/packageJsonUpdate.mjs';import {generateFrontend}from'../add-frontend/generator.mjs';import {generateBackend}from'../add-backend/generator.mjs';import {generateMoleculer}from'../add-moleculer/generator.mjs';import {generateBrowserPackage}from'../add-browser-package/generator.mjs';import {generateClientPackage}from'../add-client-package/generator.mjs';import {generateCorePackage}from'../add-core-package/generator.mjs';import {generateServerPackage}from'../add-server-package/generator.mjs';import'../../executors/update-deploy-version/executor.mjs';function addFullstackGenerator(tree, options) {
|
|
2
2
|
return __awaiter(this, void 0, void 0, function* () {
|
|
3
3
|
var _a;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// projectType: 'library',
|
|
8
|
-
// sourceRoot: `${projectRoot}/src`,
|
|
9
|
-
// targets: {},
|
|
10
|
-
// });
|
|
4
|
+
const basePath = options.path || '';
|
|
5
|
+
const projectRoot = path.join(basePath, (_a = getValid(options.name)) !== null && _a !== void 0 ? _a : 'fullstack-pro');
|
|
6
|
+
console.log(`basePath: ${basePath}`);
|
|
11
7
|
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
// Update Jenkinsfile with dynamic values
|
|
9
|
+
const jenkinsFilePath = path.join(projectRoot, 'Jenkinsfile');
|
|
10
|
+
updateJenkinsFile(jenkinsFilePath, options.name);
|
|
11
|
+
// Update package.json with the project name
|
|
12
|
+
updatePackageJson(tree, projectRoot, getValid(options.name));
|
|
16
13
|
yield formatFiles(tree);
|
|
14
|
+
if (isValid(options.config)) {
|
|
15
|
+
const configPath = path.resolve(basePath, getValid(options.config));
|
|
16
|
+
if (fs.existsSync(configPath)) {
|
|
17
|
+
try {
|
|
18
|
+
const content = String(fs.readFileSync(configPath));
|
|
19
|
+
const configs = JSON.parse(content);
|
|
20
|
+
configs.parent = projectRoot;
|
|
21
|
+
yield processConfigs(tree, configs);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
console.error('Error while reading config.', error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
17
28
|
});
|
|
18
|
-
}
|
|
29
|
+
}
|
|
30
|
+
const generateServers = (tree, parent, servers) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
|
32
|
+
const configs = serverConfig;
|
|
33
|
+
configs.name = serverName;
|
|
34
|
+
configs.directory = path.join(parent, 'servers');
|
|
35
|
+
switch (configs === null || configs === void 0 ? void 0 : configs.type) {
|
|
36
|
+
case 'frontend':
|
|
37
|
+
yield generateFrontend(tree, configs);
|
|
38
|
+
break;
|
|
39
|
+
case 'backend':
|
|
40
|
+
yield generateBackend(tree, configs);
|
|
41
|
+
break;
|
|
42
|
+
case 'moleculer':
|
|
43
|
+
yield generateMoleculer(tree, configs);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const generatePackages = (tree, parent, packages) => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
for (const [packageName, packageConfig] of Object.entries(packages)) {
|
|
50
|
+
const configs = packageConfig;
|
|
51
|
+
configs.name = packageName;
|
|
52
|
+
configs.directory = path.join(parent, 'packages');
|
|
53
|
+
switch (packageConfig === null || packageConfig === void 0 ? void 0 : packageConfig.type) {
|
|
54
|
+
case 'packages-core':
|
|
55
|
+
yield generateCorePackage(tree, configs);
|
|
56
|
+
break;
|
|
57
|
+
case 'packages-browser':
|
|
58
|
+
yield generateBrowserPackage(tree, configs);
|
|
59
|
+
break;
|
|
60
|
+
case 'packages-client':
|
|
61
|
+
yield generateClientPackage(tree, configs);
|
|
62
|
+
break;
|
|
63
|
+
case 'packages-server':
|
|
64
|
+
yield generateServerPackage(tree, configs);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
const processConfigs = (tree, configs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
if (configs.servers) {
|
|
71
|
+
yield generateServers(tree, configs.parent, configs.servers);
|
|
72
|
+
}
|
|
73
|
+
if (configs.packages && configs.packages.modules) {
|
|
74
|
+
yield generatePackages(tree, configs.parent, configs.packages.modules);
|
|
75
|
+
}
|
|
76
|
+
});export{addFullstackGenerator,addFullstackGenerator as default};//# sourceMappingURL=generator.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-fullstack/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-fullstack/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,15 @@
|
|
|
8
8
|
"type": "string",
|
|
9
9
|
"description": "",
|
|
10
10
|
"x-prompt": "What name would you like to use?"
|
|
11
|
+
},
|
|
12
|
+
"config": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "The absolute path of config file"
|
|
15
|
+
},
|
|
16
|
+
"path": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "The base path where the project will be created or updated",
|
|
19
|
+
"x-prompt": "Where do you want to create or update the project? (Leave empty for the current directory)"
|
|
11
20
|
}
|
|
12
21
|
},
|
|
13
22
|
"required": ["name"]
|