@common-stack/generate-plugin 6.0.2-alpha.3 → 6.0.2-alpha.5
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/lib/generators/add-fullstack/files/Jenkinsfile +3 -6
- package/lib/generators/add-fullstack/files/tools/sortPackageJson.mjs +8 -1
- package/lib/generators/add-fullstack/generator.cjs +17 -17
- package/lib/generators/add-fullstack/generator.cjs.map +1 -1
- package/lib/generators/add-fullstack/generator.mjs +15 -15
- package/lib/generators/add-fullstack/generator.mjs.map +1 -1
- 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/package.json +2 -2
- package/src/generators/add-fullstack/files/Jenkinsfile +3 -6
- package/src/generators/add-fullstack/files/tools/sortPackageJson.mjs +8 -1
- package/src/generators/add-fullstack/generator.ts +35 -30
- package/src/generators/add-fullstack/updates/index.ts +2 -0
- package/src/generators/add-fullstack/updates/jenkinsfileUpdate.ts +47 -0
- package/src/generators/add-fullstack/updates/packageJsonUpdate.ts +11 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.0.2-alpha.5](https://github.com/cdmbase/common-stack/compare/v6.0.2-alpha.4...v6.0.2-alpha.5) (2024-08-23)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @common-stack/generate-plugin
|
|
9
|
+
|
|
10
|
+
## [6.0.2-alpha.4](https://github.com/cdmbase/common-stack/compare/v6.0.2-alpha.3...v6.0.2-alpha.4) (2024-08-23)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @common-stack/generate-plugin
|
|
13
|
+
|
|
6
14
|
## [6.0.2-alpha.3](https://github.com/cdmbase/common-stack/compare/v6.0.2-alpha.2...v6.0.2-alpha.3) (2024-08-23)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @common-stack/generate-plugin
|
|
@@ -38,7 +38,7 @@ pipeline {
|
|
|
38
38
|
string(name: 'BUILD_TIME_OUT', defaultValue: '120', description: 'Build timeout in minutes', trim: true)
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
// Setup common + secret key variables for pipeline.
|
|
42
42
|
environment {
|
|
43
43
|
BUILD_COMMAND = getBuildCommand()
|
|
44
44
|
NAMESPACE = "${params.BASE_NAMESPACE}-${params.VERSION}"
|
|
@@ -86,7 +86,6 @@ pipeline {
|
|
|
86
86
|
sh """
|
|
87
87
|
echo "what is docker git version $GIT_BRANCH_NAME -- ${params.ENV_CHOICE}"
|
|
88
88
|
${params.BUILD_STRATEGY} install
|
|
89
|
-
${params.BUILD_STRATEGY} run lerna
|
|
90
89
|
"""
|
|
91
90
|
}
|
|
92
91
|
}
|
|
@@ -99,7 +98,7 @@ pipeline {
|
|
|
99
98
|
sshagent(credentials: [params.GIT_CREDENTIAL_ID]) {
|
|
100
99
|
sh """
|
|
101
100
|
rm .npmrc
|
|
102
|
-
lerna exec --scope=*mobile-device ${params.BUILD_STRATEGY} ${env.BUILD_COMMAND}
|
|
101
|
+
npx lerna exec --scope=*mobile-device ${params.BUILD_STRATEGY} ${env.BUILD_COMMAND}
|
|
103
102
|
git checkout -- .npmrc
|
|
104
103
|
yarn gitcommit
|
|
105
104
|
git pull origin ${params.REPOSITORY_BRANCH}
|
|
@@ -145,7 +144,6 @@ pipeline {
|
|
|
145
144
|
git merge ${env.GIT_PR_BRANCH_NAME} -m 'auto merging ${params.GIT_PR_BRANCH_NAME} \r\n[skip ci]'
|
|
146
145
|
git push origin ${params.DEVELOP_BRANCH}
|
|
147
146
|
${params.BUILD_STRATEGY} install
|
|
148
|
-
${params.BUILD_STRATEGY} run lerna
|
|
149
147
|
${params.BUILD_STRATEGY} run build
|
|
150
148
|
"""
|
|
151
149
|
script {
|
|
@@ -278,7 +276,6 @@ pipeline {
|
|
|
278
276
|
git checkout ${params.REPOSITORY_BRANCH}
|
|
279
277
|
git merge origin/${params.DEVELOP_BRANCH} -m 'auto merging ${params.DEVELOP_BRANCH} \r\n[skip ci]'
|
|
280
278
|
${params.BUILD_STRATEGY} install
|
|
281
|
-
${params.BUILD_STRATEGY} run lerna
|
|
282
279
|
"""
|
|
283
280
|
script {
|
|
284
281
|
GIT_BRANCH_NAME = params.REPOSITORY_BRANCH
|
|
@@ -648,7 +645,7 @@ def buildAndPushDockerImage(server, name, version) {
|
|
|
648
645
|
echo "Docker image ${REPOSITORY_SERVER}/${name}:${version} already exists. Skipping build."
|
|
649
646
|
} else {
|
|
650
647
|
sh """
|
|
651
|
-
lerna exec --scope=*${server} ${params.BUILD_STRATEGY} run docker:${env.BUILD_COMMAND};
|
|
648
|
+
npx lerna exec --scope=*${server} ${params.BUILD_STRATEGY} run docker:${env.BUILD_COMMAND};
|
|
652
649
|
docker tag ${name}:${version} ${REPOSITORY_SERVER}/${name}:${version}
|
|
653
650
|
docker push ${REPOSITORY_SERVER}/${name}:${version}
|
|
654
651
|
docker rmi ${REPOSITORY_SERVER}/${name}:${version}
|
|
@@ -11,23 +11,28 @@ const sortPackageJson = await import('sort-package-json').then(module => module.
|
|
|
11
11
|
|
|
12
12
|
// Directories to process
|
|
13
13
|
const directories = [
|
|
14
|
+
path.join(__dirname, '../'),
|
|
15
|
+
path.join(__dirname, '../packages-modules'),
|
|
14
16
|
path.join(__dirname, '../packages'),
|
|
15
17
|
path.join(__dirname, '../servers'),
|
|
16
18
|
path.join(__dirname, '../portable-devices')
|
|
17
19
|
];
|
|
18
20
|
|
|
21
|
+
// Function to sort a single package.json file
|
|
19
22
|
async function sortPackageJsonFile(filePath) {
|
|
20
23
|
const packageJson = JSON.parse(await fsPromises.readFile(filePath, 'utf8'));
|
|
21
24
|
const sortedPackageJson = sortPackageJson(packageJson);
|
|
22
25
|
await fsPromises.writeFile(filePath, JSON.stringify(sortedPackageJson, null, 2) + '\n');
|
|
23
26
|
}
|
|
24
27
|
|
|
28
|
+
// Recursive function to sort all package.json files in a directory, skipping node_modules
|
|
25
29
|
async function sortAllPackageJsonFiles(dir) {
|
|
26
30
|
const files = await fsPromises.readdir(dir);
|
|
27
31
|
for (const file of files) {
|
|
28
32
|
const fullPath = path.join(dir, file);
|
|
29
33
|
const stat = await fsPromises.lstat(fullPath);
|
|
30
|
-
|
|
34
|
+
|
|
35
|
+
if (stat.isDirectory() && file !== 'node_modules') {
|
|
31
36
|
await sortAllPackageJsonFiles(fullPath);
|
|
32
37
|
} else if (file === 'package.json') {
|
|
33
38
|
await sortPackageJsonFile(fullPath);
|
|
@@ -36,10 +41,12 @@ async function sortAllPackageJsonFiles(dir) {
|
|
|
36
41
|
}
|
|
37
42
|
}
|
|
38
43
|
|
|
44
|
+
// Function to process all directories
|
|
39
45
|
async function processDirectories(dirs) {
|
|
40
46
|
for (const dir of dirs) {
|
|
41
47
|
await sortAllPackageJsonFiles(dir);
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
|
|
51
|
+
// Execute the sorting process
|
|
45
52
|
await processDirectories(directories);
|
|
@@ -1,21 +1,21 @@
|
|
|
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'),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);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
|
-
|
|
5
|
-
const basePath = options.path || ''; // Use the provided path directly, no resolution to absolute path
|
|
4
|
+
const basePath = options.path || '';
|
|
6
5
|
const projectRoot = path__namespace.join(basePath, (_a = index.getValid(options.name)) !== null && _a !== void 0 ? _a : 'fullstack-pro');
|
|
7
6
|
console.log(`basePath: ${basePath}`);
|
|
8
7
|
devkit.generateFiles(tree, path__namespace.join(__dirname, 'files'), projectRoot, options);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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));
|
|
13
13
|
yield devkit.formatFiles(tree);
|
|
14
14
|
if (index.isValid(options.config)) {
|
|
15
15
|
const configPath = path__namespace.resolve(basePath, index.getValid(options.config));
|
|
16
|
-
if (
|
|
16
|
+
if (fs__namespace.existsSync(configPath)) {
|
|
17
17
|
try {
|
|
18
|
-
const content = String(
|
|
18
|
+
const content = String(fs__namespace.readFileSync(configPath));
|
|
19
19
|
const configs = JSON.parse(content);
|
|
20
20
|
configs.parent = projectRoot;
|
|
21
21
|
yield processConfigs(tree, configs);
|
|
@@ -27,14 +27,6 @@
|
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
-
const processConfigs = (tree, configs) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
-
if (configs.servers) {
|
|
32
|
-
yield generateServers(tree, configs.parent, configs.servers);
|
|
33
|
-
}
|
|
34
|
-
if (configs.packages && configs.packages.modules) {
|
|
35
|
-
yield generatePackages(tree, configs.parent, configs.packages.modules);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
30
|
const generateServers = (tree, parent, servers) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
39
31
|
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
|
40
32
|
const configs = serverConfig;
|
|
@@ -73,4 +65,12 @@ const generatePackages = (tree, parent, packages) => tslib.__awaiter(void 0, voi
|
|
|
73
65
|
break;
|
|
74
66
|
}
|
|
75
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
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":["path","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":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
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
|
-
|
|
5
|
-
const basePath = options.path || ''; // Use the provided path directly, no resolution to absolute path
|
|
4
|
+
const basePath = options.path || '';
|
|
6
5
|
const projectRoot = path.join(basePath, (_a = getValid(options.name)) !== null && _a !== void 0 ? _a : 'fullstack-pro');
|
|
7
6
|
console.log(`basePath: ${basePath}`);
|
|
8
7
|
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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));
|
|
13
13
|
yield formatFiles(tree);
|
|
14
14
|
if (isValid(options.config)) {
|
|
15
15
|
const configPath = path.resolve(basePath, getValid(options.config));
|
|
@@ -27,14 +27,6 @@ import {__awaiter}from'tslib';import {generateFiles,updateJson,formatFiles}from'
|
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
-
const processConfigs = (tree, configs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
-
if (configs.servers) {
|
|
32
|
-
yield generateServers(tree, configs.parent, configs.servers);
|
|
33
|
-
}
|
|
34
|
-
if (configs.packages && configs.packages.modules) {
|
|
35
|
-
yield generatePackages(tree, configs.parent, configs.packages.modules);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
30
|
const generateServers = (tree, parent, servers) => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
31
|
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
|
40
32
|
const configs = serverConfig;
|
|
@@ -73,4 +65,12 @@ const generatePackages = (tree, parent, packages) => __awaiter(void 0, void 0, v
|
|
|
73
65
|
break;
|
|
74
66
|
}
|
|
75
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
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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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';var fs=require('fs');function updateJenkinsFile(filePath, name) {
|
|
2
|
+
const paramsToUpdate = {
|
|
3
|
+
BASE_NAMESPACE: name,
|
|
4
|
+
CONNECTION_ID: name,
|
|
5
|
+
WORKSPACE_ID: name,
|
|
6
|
+
UNIQUE_NAME: name,
|
|
7
|
+
};
|
|
8
|
+
let jenkinsFileContent = '';
|
|
9
|
+
if (fs.existsSync(filePath)) {
|
|
10
|
+
jenkinsFileContent = fs.readFileSync(filePath, 'utf-8');
|
|
11
|
+
}
|
|
12
|
+
let labelExists = false;
|
|
13
|
+
const updatedContent = jenkinsFileContent.split('\n').map(line => {
|
|
14
|
+
// Check if the label is already defined and skip modifying it
|
|
15
|
+
if (line.includes('label') && line.includes('kubernetes')) {
|
|
16
|
+
labelExists = true;
|
|
17
|
+
}
|
|
18
|
+
// Update only the specified parameters
|
|
19
|
+
for (const param in paramsToUpdate) {
|
|
20
|
+
if (line.includes(`string(name: '${param}'`)) {
|
|
21
|
+
return line.replace(/defaultValue: '.*'/, `defaultValue: '${paramsToUpdate[param]}'`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return line;
|
|
25
|
+
}).join('\n');
|
|
26
|
+
// Add missing parameters if they don't exist
|
|
27
|
+
Object.keys(paramsToUpdate).forEach(param => {
|
|
28
|
+
if (!updatedContent.includes(`string(name: '${param}'`)) {
|
|
29
|
+
updatedContent.concat(`string(name: '${param}', defaultValue: '${paramsToUpdate[param]}', description: '${param.replace(/_/g, ' ').toLowerCase()}')\n`);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
// Only write back to the file if we have made changes
|
|
33
|
+
if (!labelExists || Object.keys(paramsToUpdate).some(param => !updatedContent.includes(`string(name: '${param}'`))) {
|
|
34
|
+
fs.writeFileSync(filePath, updatedContent, 'utf-8');
|
|
35
|
+
}
|
|
36
|
+
}exports.updateJenkinsFile=updateJenkinsFile;//# sourceMappingURL=jenkinsfileUpdate.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jenkinsfileUpdate.cjs","sources":["../../../../src/generators/add-fullstack/updates/jenkinsfileUpdate.ts"],"sourcesContent":[null],"names":[],"mappings":"kCAGgB,SAAA,iBAAiB,CAAC,QAAgB,EAAE,IAAY,EAAA;AAC5D,IAAA,MAAM,cAAc,GAAG;AACnB,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,WAAW,EAAE,IAAI;KACpB,CAAC;IAEF,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAC5B,IAAA,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QACzB,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KAC3D;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,IAAA,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAG;;AAE7D,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACvD,WAAW,GAAG,IAAI,CAAC;SACtB;;AAGD,QAAA,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;YAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,KAAK,CAAA,CAAA,CAAG,CAAC,EAAE;AAC1C,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAkB,eAAA,EAAA,cAAc,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;aACzF;SACJ;AACD,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAGd,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;QACxC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,KAAK,CAAA,CAAA,CAAG,CAAC,EAAE;YACrD,cAAc,CAAC,MAAM,CACjB,CAAiB,cAAA,EAAA,KAAK,qBAAqB,cAAc,CAAC,KAAK,CAAC,CAAoB,iBAAA,EAAA,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAM,IAAA,CAAA,CACnI,CAAC;SACL;AACL,KAAC,CAAC,CAAC;;IAGH,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAiB,cAAA,EAAA,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC,EAAE;QAChH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;KACvD;AACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function updateJenkinsFile(filePath: string, name: string): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import fs__default from'fs';function updateJenkinsFile(filePath, name) {
|
|
2
|
+
const paramsToUpdate = {
|
|
3
|
+
BASE_NAMESPACE: name,
|
|
4
|
+
CONNECTION_ID: name,
|
|
5
|
+
WORKSPACE_ID: name,
|
|
6
|
+
UNIQUE_NAME: name,
|
|
7
|
+
};
|
|
8
|
+
let jenkinsFileContent = '';
|
|
9
|
+
if (fs__default.existsSync(filePath)) {
|
|
10
|
+
jenkinsFileContent = fs__default.readFileSync(filePath, 'utf-8');
|
|
11
|
+
}
|
|
12
|
+
let labelExists = false;
|
|
13
|
+
const updatedContent = jenkinsFileContent.split('\n').map(line => {
|
|
14
|
+
// Check if the label is already defined and skip modifying it
|
|
15
|
+
if (line.includes('label') && line.includes('kubernetes')) {
|
|
16
|
+
labelExists = true;
|
|
17
|
+
}
|
|
18
|
+
// Update only the specified parameters
|
|
19
|
+
for (const param in paramsToUpdate) {
|
|
20
|
+
if (line.includes(`string(name: '${param}'`)) {
|
|
21
|
+
return line.replace(/defaultValue: '.*'/, `defaultValue: '${paramsToUpdate[param]}'`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return line;
|
|
25
|
+
}).join('\n');
|
|
26
|
+
// Add missing parameters if they don't exist
|
|
27
|
+
Object.keys(paramsToUpdate).forEach(param => {
|
|
28
|
+
if (!updatedContent.includes(`string(name: '${param}'`)) {
|
|
29
|
+
updatedContent.concat(`string(name: '${param}', defaultValue: '${paramsToUpdate[param]}', description: '${param.replace(/_/g, ' ').toLowerCase()}')\n`);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
// Only write back to the file if we have made changes
|
|
33
|
+
if (!labelExists || Object.keys(paramsToUpdate).some(param => !updatedContent.includes(`string(name: '${param}'`))) {
|
|
34
|
+
fs__default.writeFileSync(filePath, updatedContent, 'utf-8');
|
|
35
|
+
}
|
|
36
|
+
}export{updateJenkinsFile};//# sourceMappingURL=jenkinsfileUpdate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jenkinsfileUpdate.mjs","sources":["../../../../src/generators/add-fullstack/updates/jenkinsfileUpdate.ts"],"sourcesContent":[null],"names":["fs"],"mappings":"4BAGgB,SAAA,iBAAiB,CAAC,QAAgB,EAAE,IAAY,EAAA;AAC5D,IAAA,MAAM,cAAc,GAAG;AACnB,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,WAAW,EAAE,IAAI;KACpB,CAAC;IAEF,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAC5B,IAAA,IAAIA,WAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QACzB,kBAAkB,GAAGA,WAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KAC3D;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,IAAA,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAG;;AAE7D,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACvD,WAAW,GAAG,IAAI,CAAC;SACtB;;AAGD,QAAA,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;YAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,KAAK,CAAA,CAAA,CAAG,CAAC,EAAE;AAC1C,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAkB,eAAA,EAAA,cAAc,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;aACzF;SACJ;AACD,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAGd,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;QACxC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,KAAK,CAAA,CAAA,CAAG,CAAC,EAAE;YACrD,cAAc,CAAC,MAAM,CACjB,CAAiB,cAAA,EAAA,KAAK,qBAAqB,cAAc,CAAC,KAAK,CAAC,CAAoB,iBAAA,EAAA,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAM,IAAA,CAAA,CACnI,CAAC;SACL;AACL,KAAC,CAAC,CAAC;;IAGH,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAiB,cAAA,EAAA,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC,EAAE;QAChHA,WAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;KACvD;AACL"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use strict';var devkit=require('@nx/devkit'),path=require('path');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 updatePackageJson(tree, projectRoot, name) {
|
|
2
|
+
const packageJsonPath = path__namespace.join(projectRoot, 'package.json');
|
|
3
|
+
devkit.updateJson(tree, packageJsonPath, (packageJson) => {
|
|
4
|
+
packageJson['name'] = name;
|
|
5
|
+
// You can add more custom logic here if needed
|
|
6
|
+
return packageJson;
|
|
7
|
+
});
|
|
8
|
+
}exports.updatePackageJson=updatePackageJson;//# sourceMappingURL=packageJsonUpdate.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageJsonUpdate.cjs","sources":["../../../../src/generators/add-fullstack/updates/packageJsonUpdate.ts"],"sourcesContent":[null],"names":["path","updateJson"],"mappings":"0aAGgB,iBAAiB,CAAC,IAAU,EAAE,WAAmB,EAAE,IAAY,EAAA;IAC3E,MAAM,eAAe,GAAGA,eAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/DC,iBAAU,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,WAAW,KAAI;AAC9C,QAAA,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;;AAE3B,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;AACP"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import {updateJson}from'@nx/devkit';import*as path from'path';function updatePackageJson(tree, projectRoot, name) {
|
|
2
|
+
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
3
|
+
updateJson(tree, packageJsonPath, (packageJson) => {
|
|
4
|
+
packageJson['name'] = name;
|
|
5
|
+
// You can add more custom logic here if needed
|
|
6
|
+
return packageJson;
|
|
7
|
+
});
|
|
8
|
+
}export{updatePackageJson};//# sourceMappingURL=packageJsonUpdate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageJsonUpdate.mjs","sources":["../../../../src/generators/add-fullstack/updates/packageJsonUpdate.ts"],"sourcesContent":[null],"names":[],"mappings":"uEAGgB,iBAAiB,CAAC,IAAU,EAAE,WAAmB,EAAE,IAAY,EAAA;IAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,WAAW,KAAI;AAC9C,QAAA,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;;AAE3B,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;AACP"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@common-stack/generate-plugin",
|
|
3
|
-
"version": "6.0.2-alpha.
|
|
3
|
+
"version": "6.0.2-alpha.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./lib/index.mjs",
|
|
6
6
|
"typings": "./lib/index.d.ts",
|
|
@@ -26,5 +26,5 @@
|
|
|
26
26
|
},
|
|
27
27
|
"executors": "./executors.json",
|
|
28
28
|
"generators": "./generators.json",
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "7aa7dbaaf34d20844c716890949228d064c04db0"
|
|
30
30
|
}
|
|
@@ -38,7 +38,7 @@ pipeline {
|
|
|
38
38
|
string(name: 'BUILD_TIME_OUT', defaultValue: '120', description: 'Build timeout in minutes', trim: true)
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
// Setup common + secret key variables for pipeline.
|
|
42
42
|
environment {
|
|
43
43
|
BUILD_COMMAND = getBuildCommand()
|
|
44
44
|
NAMESPACE = "${params.BASE_NAMESPACE}-${params.VERSION}"
|
|
@@ -86,7 +86,6 @@ pipeline {
|
|
|
86
86
|
sh """
|
|
87
87
|
echo "what is docker git version $GIT_BRANCH_NAME -- ${params.ENV_CHOICE}"
|
|
88
88
|
${params.BUILD_STRATEGY} install
|
|
89
|
-
${params.BUILD_STRATEGY} run lerna
|
|
90
89
|
"""
|
|
91
90
|
}
|
|
92
91
|
}
|
|
@@ -99,7 +98,7 @@ pipeline {
|
|
|
99
98
|
sshagent(credentials: [params.GIT_CREDENTIAL_ID]) {
|
|
100
99
|
sh """
|
|
101
100
|
rm .npmrc
|
|
102
|
-
lerna exec --scope=*mobile-device ${params.BUILD_STRATEGY} ${env.BUILD_COMMAND}
|
|
101
|
+
npx lerna exec --scope=*mobile-device ${params.BUILD_STRATEGY} ${env.BUILD_COMMAND}
|
|
103
102
|
git checkout -- .npmrc
|
|
104
103
|
yarn gitcommit
|
|
105
104
|
git pull origin ${params.REPOSITORY_BRANCH}
|
|
@@ -145,7 +144,6 @@ pipeline {
|
|
|
145
144
|
git merge ${env.GIT_PR_BRANCH_NAME} -m 'auto merging ${params.GIT_PR_BRANCH_NAME} \r\n[skip ci]'
|
|
146
145
|
git push origin ${params.DEVELOP_BRANCH}
|
|
147
146
|
${params.BUILD_STRATEGY} install
|
|
148
|
-
${params.BUILD_STRATEGY} run lerna
|
|
149
147
|
${params.BUILD_STRATEGY} run build
|
|
150
148
|
"""
|
|
151
149
|
script {
|
|
@@ -278,7 +276,6 @@ pipeline {
|
|
|
278
276
|
git checkout ${params.REPOSITORY_BRANCH}
|
|
279
277
|
git merge origin/${params.DEVELOP_BRANCH} -m 'auto merging ${params.DEVELOP_BRANCH} \r\n[skip ci]'
|
|
280
278
|
${params.BUILD_STRATEGY} install
|
|
281
|
-
${params.BUILD_STRATEGY} run lerna
|
|
282
279
|
"""
|
|
283
280
|
script {
|
|
284
281
|
GIT_BRANCH_NAME = params.REPOSITORY_BRANCH
|
|
@@ -648,7 +645,7 @@ def buildAndPushDockerImage(server, name, version) {
|
|
|
648
645
|
echo "Docker image ${REPOSITORY_SERVER}/${name}:${version} already exists. Skipping build."
|
|
649
646
|
} else {
|
|
650
647
|
sh """
|
|
651
|
-
lerna exec --scope=*${server} ${params.BUILD_STRATEGY} run docker:${env.BUILD_COMMAND};
|
|
648
|
+
npx lerna exec --scope=*${server} ${params.BUILD_STRATEGY} run docker:${env.BUILD_COMMAND};
|
|
652
649
|
docker tag ${name}:${version} ${REPOSITORY_SERVER}/${name}:${version}
|
|
653
650
|
docker push ${REPOSITORY_SERVER}/${name}:${version}
|
|
654
651
|
docker rmi ${REPOSITORY_SERVER}/${name}:${version}
|
|
@@ -11,23 +11,28 @@ const sortPackageJson = await import('sort-package-json').then(module => module.
|
|
|
11
11
|
|
|
12
12
|
// Directories to process
|
|
13
13
|
const directories = [
|
|
14
|
+
path.join(__dirname, '../'),
|
|
15
|
+
path.join(__dirname, '../packages-modules'),
|
|
14
16
|
path.join(__dirname, '../packages'),
|
|
15
17
|
path.join(__dirname, '../servers'),
|
|
16
18
|
path.join(__dirname, '../portable-devices')
|
|
17
19
|
];
|
|
18
20
|
|
|
21
|
+
// Function to sort a single package.json file
|
|
19
22
|
async function sortPackageJsonFile(filePath) {
|
|
20
23
|
const packageJson = JSON.parse(await fsPromises.readFile(filePath, 'utf8'));
|
|
21
24
|
const sortedPackageJson = sortPackageJson(packageJson);
|
|
22
25
|
await fsPromises.writeFile(filePath, JSON.stringify(sortedPackageJson, null, 2) + '\n');
|
|
23
26
|
}
|
|
24
27
|
|
|
28
|
+
// Recursive function to sort all package.json files in a directory, skipping node_modules
|
|
25
29
|
async function sortAllPackageJsonFiles(dir) {
|
|
26
30
|
const files = await fsPromises.readdir(dir);
|
|
27
31
|
for (const file of files) {
|
|
28
32
|
const fullPath = path.join(dir, file);
|
|
29
33
|
const stat = await fsPromises.lstat(fullPath);
|
|
30
|
-
|
|
34
|
+
|
|
35
|
+
if (stat.isDirectory() && file !== 'node_modules') {
|
|
31
36
|
await sortAllPackageJsonFiles(fullPath);
|
|
32
37
|
} else if (file === 'package.json') {
|
|
33
38
|
await sortPackageJsonFile(fullPath);
|
|
@@ -36,10 +41,12 @@ async function sortAllPackageJsonFiles(dir) {
|
|
|
36
41
|
}
|
|
37
42
|
}
|
|
38
43
|
|
|
44
|
+
// Function to process all directories
|
|
39
45
|
async function processDirectories(dirs) {
|
|
40
46
|
for (const dir of dirs) {
|
|
41
47
|
await sortAllPackageJsonFiles(dir);
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
|
|
51
|
+
// Execute the sorting process
|
|
45
52
|
await processDirectories(directories);
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/* eslint-disable import/no-cycle */
|
|
3
|
+
import { addProjectConfiguration, formatFiles, generateFiles, Tree } from '@nx/devkit';
|
|
2
4
|
import * as path from 'path';
|
|
3
|
-
import fs from 'fs';
|
|
5
|
+
import * as fs from 'fs';
|
|
4
6
|
import { AddFullstackGeneratorSchema } from './schema';
|
|
5
7
|
import { getValid, isValid } from '../../utils';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
import { updateJenkinsFile, updatePackageJson } from './updates';
|
|
9
|
+
import {
|
|
10
|
+
generateBackend,
|
|
11
|
+
generateFrontend,
|
|
9
12
|
generateMoleculer,
|
|
10
13
|
generateBrowserPackage,
|
|
11
14
|
generateClientPackage,
|
|
@@ -14,19 +17,20 @@ import {
|
|
|
14
17
|
} from '../../index';
|
|
15
18
|
|
|
16
19
|
export async function addFullstackGenerator(tree: Tree, options: AddFullstackGeneratorSchema) {
|
|
17
|
-
|
|
18
|
-
const basePath = options.path || ''; // Use the provided path directly, no resolution to absolute path
|
|
20
|
+
const basePath = options.path || '';
|
|
19
21
|
const projectRoot = path.join(basePath, getValid(options.name) ?? 'fullstack-pro');
|
|
20
22
|
|
|
21
23
|
console.log(`basePath: ${basePath}`);
|
|
22
|
-
|
|
24
|
+
|
|
23
25
|
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
|
|
27
|
+
// Update Jenkinsfile with dynamic values
|
|
28
|
+
const jenkinsFilePath = path.join(projectRoot, 'Jenkinsfile');
|
|
29
|
+
updateJenkinsFile(jenkinsFilePath, options.name);
|
|
30
|
+
|
|
31
|
+
// Update package.json with the project name
|
|
32
|
+
updatePackageJson(tree, projectRoot, getValid(options.name));
|
|
33
|
+
|
|
30
34
|
await formatFiles(tree);
|
|
31
35
|
|
|
32
36
|
if (isValid(options.config)) {
|
|
@@ -38,30 +42,21 @@ export async function addFullstackGenerator(tree: Tree, options: AddFullstackGen
|
|
|
38
42
|
configs.parent = projectRoot;
|
|
39
43
|
|
|
40
44
|
await processConfigs(tree, configs);
|
|
41
|
-
} catch(error) {
|
|
45
|
+
} catch (error) {
|
|
42
46
|
console.error('Error while reading config.', error);
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
const processConfigs = async (tree: Tree, configs: any) => {
|
|
49
|
-
if (configs.servers) {
|
|
50
|
-
await generateServers(tree, configs.parent, configs.servers);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (configs.packages && configs.packages.modules) {
|
|
54
|
-
await generatePackages(tree, configs.parent, configs.packages.modules);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
52
|
|
|
58
53
|
const generateServers = async (tree: Tree, parent: string, servers: any) => {
|
|
59
54
|
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
|
60
55
|
const configs: any = serverConfig;
|
|
61
56
|
configs.name = serverName;
|
|
62
57
|
configs.directory = path.join(parent, 'servers');
|
|
63
|
-
|
|
64
|
-
switch(configs?.type) {
|
|
58
|
+
|
|
59
|
+
switch (configs?.type) {
|
|
65
60
|
case 'frontend':
|
|
66
61
|
await generateFrontend(tree, configs);
|
|
67
62
|
break;
|
|
@@ -75,15 +70,15 @@ const generateServers = async (tree: Tree, parent: string, servers: any) => {
|
|
|
75
70
|
break;
|
|
76
71
|
}
|
|
77
72
|
}
|
|
78
|
-
}
|
|
73
|
+
};
|
|
79
74
|
|
|
80
75
|
const generatePackages = async (tree: Tree, parent: string, packages: any) => {
|
|
81
76
|
for (const [packageName, packageConfig] of Object.entries(packages)) {
|
|
82
77
|
const configs: any = packageConfig;
|
|
83
78
|
configs.name = packageName;
|
|
84
79
|
configs.directory = path.join(parent, 'packages');
|
|
85
|
-
|
|
86
|
-
switch((packageConfig as any)?.type) {
|
|
80
|
+
|
|
81
|
+
switch ((packageConfig as any)?.type) {
|
|
87
82
|
case 'packages-core':
|
|
88
83
|
await generateCorePackage(tree, configs);
|
|
89
84
|
break;
|
|
@@ -100,6 +95,16 @@ const generatePackages = async (tree: Tree, parent: string, packages: any) => {
|
|
|
100
95
|
break;
|
|
101
96
|
}
|
|
102
97
|
}
|
|
103
|
-
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const processConfigs = async (tree: Tree, configs: any) => {
|
|
101
|
+
if (configs.servers) {
|
|
102
|
+
await generateServers(tree, configs.parent, configs.servers);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (configs.packages && configs.packages.modules) {
|
|
106
|
+
await generatePackages(tree, configs.parent, configs.packages.modules);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
104
109
|
|
|
105
110
|
export default addFullstackGenerator;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
|
|
4
|
+
export function updateJenkinsFile(filePath: string, name: string) {
|
|
5
|
+
const paramsToUpdate = {
|
|
6
|
+
BASE_NAMESPACE: name,
|
|
7
|
+
CONNECTION_ID: name,
|
|
8
|
+
WORKSPACE_ID: name,
|
|
9
|
+
UNIQUE_NAME: name,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
let jenkinsFileContent = '';
|
|
13
|
+
if (fs.existsSync(filePath)) {
|
|
14
|
+
jenkinsFileContent = fs.readFileSync(filePath, 'utf-8');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
let labelExists = false;
|
|
18
|
+
|
|
19
|
+
const updatedContent = jenkinsFileContent.split('\n').map(line => {
|
|
20
|
+
// Check if the label is already defined and skip modifying it
|
|
21
|
+
if (line.includes('label') && line.includes('kubernetes')) {
|
|
22
|
+
labelExists = true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Update only the specified parameters
|
|
26
|
+
for (const param in paramsToUpdate) {
|
|
27
|
+
if (line.includes(`string(name: '${param}'`)) {
|
|
28
|
+
return line.replace(/defaultValue: '.*'/, `defaultValue: '${paramsToUpdate[param]}'`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return line;
|
|
32
|
+
}).join('\n');
|
|
33
|
+
|
|
34
|
+
// Add missing parameters if they don't exist
|
|
35
|
+
Object.keys(paramsToUpdate).forEach(param => {
|
|
36
|
+
if (!updatedContent.includes(`string(name: '${param}'`)) {
|
|
37
|
+
updatedContent.concat(
|
|
38
|
+
`string(name: '${param}', defaultValue: '${paramsToUpdate[param]}', description: '${param.replace(/_/g, ' ').toLowerCase()}')\n`
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Only write back to the file if we have made changes
|
|
44
|
+
if (!labelExists || Object.keys(paramsToUpdate).some(param => !updatedContent.includes(`string(name: '${param}'`))) {
|
|
45
|
+
fs.writeFileSync(filePath, updatedContent, 'utf-8');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tree, updateJson } from '@nx/devkit';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
|
|
4
|
+
export function updatePackageJson(tree: Tree, projectRoot: string, name: string) {
|
|
5
|
+
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
6
|
+
updateJson(tree, packageJsonPath, (packageJson) => {
|
|
7
|
+
packageJson['name'] = name;
|
|
8
|
+
// You can add more custom logic here if needed
|
|
9
|
+
return packageJson;
|
|
10
|
+
});
|
|
11
|
+
}
|