@axinom/mosaic-cli 0.20.0-rc.25 → 0.20.0-rc.26
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/dist/commands/hosting/pilet/pilet-commands.js +8 -13
- package/dist/commands/hosting/pilet/pilet-commands.js.map +1 -1
- package/dist/commands/hosting/pilet/register-pilet-options.d.ts +0 -2
- package/dist/commands/hosting/pilet/register-pilet.d.ts +1 -1
- package/dist/commands/hosting/pilet/register-pilet.js +62 -51
- package/dist/commands/hosting/pilet/register-pilet.js.map +1 -1
- package/package.json +4 -4
- package/src/commands/hosting/pilet/pilet-commands.ts +9 -13
- package/src/commands/hosting/pilet/register-pilet-options.ts +0 -2
- package/src/commands/hosting/pilet/register-pilet.ts +89 -57
|
@@ -28,19 +28,9 @@ const piletRegister = {
|
|
|
28
28
|
describe: 'Client Secret to authenticate',
|
|
29
29
|
alias: 's',
|
|
30
30
|
string: true,
|
|
31
|
-
})
|
|
32
|
-
.option('tenantId', {
|
|
33
|
-
describe: 'Tenant ID',
|
|
34
|
-
alias: 't',
|
|
35
|
-
string: true,
|
|
36
|
-
})
|
|
37
|
-
.option('environmentId', {
|
|
38
|
-
describe: 'Environment ID',
|
|
39
|
-
alias: 'e',
|
|
40
|
-
string: true,
|
|
41
31
|
})
|
|
42
32
|
.option('piletArtifactPath', {
|
|
43
|
-
describe: '
|
|
33
|
+
describe: 'Path to the pilet artifact .tgz file or a directory containing the .tgz file',
|
|
44
34
|
alias: 'p',
|
|
45
35
|
string: true,
|
|
46
36
|
})
|
|
@@ -63,8 +53,13 @@ const piletRegister = {
|
|
|
63
53
|
},
|
|
64
54
|
handler: (args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
65
55
|
// Validate arguments and read any arguments that are coming from environment variables.
|
|
66
|
-
const validatedArgs = (0, register_pilet_1.validateArgs)(args);
|
|
67
|
-
|
|
56
|
+
const [validatedArgs, errorMessages] = (0, register_pilet_1.validateArgs)(args);
|
|
57
|
+
if (errorMessages.length > 0) {
|
|
58
|
+
console.log(errorMessages);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
yield (0, register_pilet_1.registerPilet)(validatedArgs);
|
|
62
|
+
}
|
|
68
63
|
}),
|
|
69
64
|
};
|
|
70
65
|
//# sourceMappingURL=pilet-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pilet-commands.js","sourceRoot":"","sources":["../../../../src/commands/hosting/pilet/pilet-commands.ts"],"names":[],"mappings":";;;;AACA,qDAA+D;AAGlD,QAAA,aAAa,GAAoC;IAC5D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CACN,UAAU,EACV,oDAAoD,EACpD,aAAa,CACd;SACA,aAAa,EAAE;IACpB,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAoD;IACrE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,KAAK;aACT,MAAM,CAAC,WAAW,EAAE;YACnB,QAAQ,EAAE,8CAA8C;YACxD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,uBAAuB,EAAE;YAC/B,QAAQ,EAAE,2BAA2B;YACrC,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,2BAA2B,EAAE;YACnC,QAAQ,EAAE,+BAA+B;YACzC,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"pilet-commands.js","sourceRoot":"","sources":["../../../../src/commands/hosting/pilet/pilet-commands.ts"],"names":[],"mappings":";;;;AACA,qDAA+D;AAGlD,QAAA,aAAa,GAAoC;IAC5D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CACN,UAAU,EACV,oDAAoD,EACpD,aAAa,CACd;SACA,aAAa,EAAE;IACpB,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAoD;IACrE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,KAAK;aACT,MAAM,CAAC,WAAW,EAAE;YACnB,QAAQ,EAAE,8CAA8C;YACxD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,uBAAuB,EAAE;YAC/B,QAAQ,EAAE,2BAA2B;YACrC,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,2BAA2B,EAAE;YACnC,QAAQ,EAAE,+BAA+B;YACzC,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,mBAAmB,EAAE;YAC3B,QAAQ,EACN,8EAA8E;YAChF,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,sBAAsB,EAAE;YAC9B,QAAQ,EAAE,6CAA6C;YACvD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,6BAA6B,EAAE;YACrC,QAAQ,EAAE,iCAAiC;YAC3C,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,sBAAsB,EAAE;YAC9B,QAAQ,EAAE,uBAAuB;YACjC,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,CAAO,IAAI,EAAE,EAAE;QACtB,wFAAwF;QACxF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,IAAA,6BAAY,EAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SAC5B;aAAM;YACL,MAAM,IAAA,8BAAa,EAAC,aAAa,CAAC,CAAC;SACpC;IACH,CAAC,CAAA;CACF,CAAC"}
|
|
@@ -5,8 +5,6 @@ export interface GetRegisterPiletOptions {
|
|
|
5
5
|
serviceId?: string;
|
|
6
6
|
mosaicHostingClientId?: string;
|
|
7
7
|
mosaicHostingClientSecret?: string;
|
|
8
|
-
tenantId?: string;
|
|
9
|
-
environmentId?: string;
|
|
10
8
|
piletArtifactPath?: string;
|
|
11
9
|
idServiceAuthBaseURL?: string;
|
|
12
10
|
microFrontendServiceBaseURL?: string;
|
|
@@ -7,4 +7,4 @@ export declare const registerPilet: (args: Required<GetRegisterPiletOptions>) =>
|
|
|
7
7
|
* @param args
|
|
8
8
|
* @returns
|
|
9
9
|
*/
|
|
10
|
-
export declare const validateArgs: (args: GetRegisterPiletOptions) => Required<GetRegisterPiletOptions
|
|
10
|
+
export declare const validateArgs: (args: GetRegisterPiletOptions) => [Required<GetRegisterPiletOptions>, string[]];
|
|
@@ -10,7 +10,16 @@ const fs_1 = require("fs");
|
|
|
10
10
|
const path = require("path");
|
|
11
11
|
const registerPilet = (args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
12
12
|
var _a, _b;
|
|
13
|
-
|
|
13
|
+
let serviceAccountToken;
|
|
14
|
+
try {
|
|
15
|
+
serviceAccountToken = yield (0, mosaic_id_link_be_1.getServiceAccountToken)(args.idServiceAuthBaseURL, args.mosaicHostingClientId, args.mosaicHostingClientSecret);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.log(`\nFailed to get the service account token. ${error.message}\n`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Extract the tenant/environment IDs from the access token
|
|
22
|
+
const { tenantId, environmentId } = JSON.parse(Buffer.from(serviceAccountToken.accessToken.split('.')[1], 'base64').toString());
|
|
14
23
|
const data = new FormData();
|
|
15
24
|
const config = {
|
|
16
25
|
maxBodyLength: 52428890,
|
|
@@ -18,23 +27,25 @@ const registerPilet = (args) => tslib_1.__awaiter(void 0, void 0, void 0, functi
|
|
|
18
27
|
};
|
|
19
28
|
try {
|
|
20
29
|
const artifactToPublish = findArtifactToPublish(args.piletArtifactPath);
|
|
21
|
-
|
|
22
|
-
data.append('', (0, fs_1.createReadStream)(artifactToPublish));
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
throw new Error(`No Pilet Artifact found at ${args.piletArtifactPath}.`);
|
|
26
|
-
}
|
|
30
|
+
data.append('', (0, fs_1.createReadStream)(artifactToPublish));
|
|
27
31
|
}
|
|
28
32
|
catch (error) {
|
|
29
|
-
|
|
33
|
+
console.log(`\n${error.message}`);
|
|
34
|
+
return;
|
|
30
35
|
}
|
|
31
36
|
try {
|
|
32
|
-
|
|
37
|
+
console.log(`\nRegistering pilet...`);
|
|
38
|
+
console.log(`path:\t\t${args.piletArtifactPath}`);
|
|
39
|
+
console.log(`tenantId:\t${tenantId}`);
|
|
40
|
+
console.log(`environmentId:\t${environmentId}`);
|
|
41
|
+
console.log(`serviceId:\t${args.serviceId}\n`);
|
|
42
|
+
const result = yield axios_1.default.post(`${args.microFrontendServiceBaseURL}/v1/pilets/${tenantId}/${environmentId}/${args.serviceId}/register?override=${args.overrideRegistration}`, data, config);
|
|
33
43
|
console.log('Registration of Pilet complete.');
|
|
34
44
|
console.log(result.data);
|
|
35
45
|
}
|
|
36
46
|
catch (error) {
|
|
37
47
|
console.log('Registration of Pilet failed.', (_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : error.message);
|
|
48
|
+
return;
|
|
38
49
|
}
|
|
39
50
|
});
|
|
40
51
|
exports.registerPilet = registerPilet;
|
|
@@ -46,70 +57,70 @@ exports.registerPilet = registerPilet;
|
|
|
46
57
|
* @returns
|
|
47
58
|
*/
|
|
48
59
|
const validateArgs = (args) => {
|
|
49
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const microFrontendServiceBaseURL = (_h = args.microFrontendServiceBaseURL) !== null && _h !== void 0 ? _h : process.env.MICRO_FRONTEND_SERVICE_BASE_URL;
|
|
60
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
61
|
+
const errorMessages = [];
|
|
62
|
+
const idServiceAuthBaseURL = (_b = (_a = args.idServiceAuthBaseURL) !== null && _a !== void 0 ? _a : process.env.ID_SERVICE_AUTH_BASE_URL) !== null && _b !== void 0 ? _b : '';
|
|
63
|
+
const mosaicHostingClientId = (_d = (_c = args.mosaicHostingClientId) !== null && _c !== void 0 ? _c : process.env.MOSAIC_HOSTING_CLIENT_ID) !== null && _d !== void 0 ? _d : '';
|
|
64
|
+
const mosaicHostingClientSecret = (_f = (_e = args.mosaicHostingClientSecret) !== null && _e !== void 0 ? _e : process.env.MOSAIC_HOSTING_CLIENT_SECRET) !== null && _f !== void 0 ? _f : '';
|
|
65
|
+
const serviceId = (_h = (_g = args.serviceId) !== null && _g !== void 0 ? _g : process.env.SERVICE_ID) !== null && _h !== void 0 ? _h : '';
|
|
66
|
+
const piletArtifactPath = (_k = (_j = args.piletArtifactPath) !== null && _j !== void 0 ? _j : process.env.PILET_PATH) !== null && _k !== void 0 ? _k : '';
|
|
67
|
+
const microFrontendServiceBaseURL = (_m = (_l = args.microFrontendServiceBaseURL) !== null && _l !== void 0 ? _l : process.env.MICRO_FRONTEND_SERVICE_BASE_URL) !== null && _m !== void 0 ? _m : '';
|
|
58
68
|
if ((0, mosaic_service_common_1.isNullOrWhitespace)(idServiceAuthBaseURL)) {
|
|
59
|
-
|
|
69
|
+
errorMessages.push('[idServiceAuthBaseURL] is required.');
|
|
60
70
|
}
|
|
61
71
|
if ((0, mosaic_service_common_1.isNullOrWhitespace)(mosaicHostingClientId)) {
|
|
62
|
-
|
|
72
|
+
errorMessages.push('[clientId] is required.');
|
|
63
73
|
}
|
|
64
74
|
if ((0, mosaic_service_common_1.isNullOrWhitespace)(mosaicHostingClientSecret)) {
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
if ((0, mosaic_service_common_1.isNullOrWhitespace)(tenantId)) {
|
|
68
|
-
throw new Error('tenantId is required.');
|
|
69
|
-
}
|
|
70
|
-
if ((0, mosaic_service_common_1.isNullOrWhitespace)(environmentId)) {
|
|
71
|
-
throw new Error('environmentId is required,');
|
|
75
|
+
errorMessages.push('[clientSecret] is required.');
|
|
72
76
|
}
|
|
73
77
|
if ((0, mosaic_service_common_1.isNullOrWhitespace)(serviceId)) {
|
|
74
|
-
|
|
78
|
+
errorMessages.push('[serviceId] is required.');
|
|
75
79
|
}
|
|
76
80
|
if ((0, mosaic_service_common_1.isNullOrWhitespace)(piletArtifactPath)) {
|
|
77
|
-
|
|
81
|
+
errorMessages.push('[piletArtifactPath] is required,');
|
|
78
82
|
}
|
|
79
83
|
if ((0, mosaic_service_common_1.isNullOrWhitespace)(microFrontendServiceBaseURL)) {
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
return
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
84
|
+
errorMessages.push('[microFrontendServiceBaseURL] is required.');
|
|
85
|
+
}
|
|
86
|
+
return [
|
|
87
|
+
{
|
|
88
|
+
idServiceAuthBaseURL,
|
|
89
|
+
mosaicHostingClientId,
|
|
90
|
+
mosaicHostingClientSecret,
|
|
91
|
+
serviceId,
|
|
92
|
+
piletArtifactPath,
|
|
93
|
+
microFrontendServiceBaseURL,
|
|
94
|
+
overrideRegistration: (_o = args.overrideRegistration) !== null && _o !== void 0 ? _o : false,
|
|
95
|
+
},
|
|
96
|
+
errorMessages,
|
|
97
|
+
];
|
|
93
98
|
};
|
|
94
99
|
exports.validateArgs = validateArgs;
|
|
95
100
|
const findArtifactToPublish = (piletPath) => {
|
|
96
101
|
if (!(0, fs_1.existsSync)(piletPath)) {
|
|
97
|
-
throw new Error(`
|
|
102
|
+
throw new Error(`The specified pilet artifact path [${piletPath}] does not exist.`);
|
|
98
103
|
}
|
|
99
|
-
const files = (0, fs_1.readdirSync)(piletPath);
|
|
100
104
|
const tgzFiles = [];
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
// Is the path a directory?
|
|
106
|
+
if ((0, fs_1.lstatSync)(piletPath).isDirectory()) {
|
|
107
|
+
const files = (0, fs_1.readdirSync)(piletPath);
|
|
108
|
+
for (let i = 0; i < files.length; i++) {
|
|
109
|
+
const filename = path.join(piletPath, files[i]);
|
|
110
|
+
const stat = (0, fs_1.lstatSync)(filename);
|
|
111
|
+
if (!stat.isDirectory() && filename.endsWith('.tgz')) {
|
|
112
|
+
tgzFiles.push(filename);
|
|
113
|
+
}
|
|
106
114
|
}
|
|
115
|
+
} // Path is a file
|
|
116
|
+
else {
|
|
117
|
+
tgzFiles.push(piletPath);
|
|
107
118
|
}
|
|
108
119
|
if (tgzFiles.length > 1) {
|
|
109
|
-
throw new Error(`Found more than one .tgz files in the folder ${piletPath}. Please make sure only one .tgz file exists
|
|
120
|
+
throw new Error(`Found more than one .tgz files in the folder [${piletPath}]. Please make sure only one .tgz file exists or specify the path to the .tgz file.`);
|
|
110
121
|
}
|
|
111
122
|
if (tgzFiles.length === 0) {
|
|
112
|
-
throw new Error(`
|
|
123
|
+
throw new Error(`No .tgz files found at pilet artifact path [${piletPath}].`);
|
|
113
124
|
}
|
|
114
125
|
return tgzFiles[0];
|
|
115
126
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-pilet.js","sourceRoot":"","sources":["../../../../src/commands/hosting/pilet/register-pilet.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"register-pilet.js","sourceRoot":"","sources":["../../../../src/commands/hosting/pilet/register-pilet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axinom/mosaic-cli",
|
|
3
|
-
"version": "0.20.0-rc.
|
|
3
|
+
"version": "0.20.0-rc.26",
|
|
4
4
|
"description": "The Axinom Mosaic CLI",
|
|
5
5
|
"author": "Axinom",
|
|
6
6
|
"license": "PROPRIETARY",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@asyncapi/diff": "^0.4.1",
|
|
34
34
|
"@asyncapi/modelina": "^1.8.4",
|
|
35
35
|
"@asyncapi/parser": "^2.0.2",
|
|
36
|
-
"@axinom/mosaic-id-link-be": "^0.13.4-rc.
|
|
37
|
-
"@axinom/mosaic-service-common": "^0.35.0-rc.
|
|
36
|
+
"@axinom/mosaic-id-link-be": "^0.13.4-rc.26",
|
|
37
|
+
"@axinom/mosaic-service-common": "^0.35.0-rc.26",
|
|
38
38
|
"@graphql-inspector/core": "^3.1.2",
|
|
39
39
|
"@stoplight/spectral": "^5.9.1",
|
|
40
40
|
"axios": "^0.19.2",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"publishConfig": {
|
|
69
69
|
"access": "public"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "12417f30d234b83afb184c06cd92a3ef5fc0ea7f"
|
|
72
72
|
}
|
|
@@ -34,18 +34,9 @@ const piletRegister: CommandModule<unknown, GetRegisterPiletOptions> = {
|
|
|
34
34
|
alias: 's',
|
|
35
35
|
string: true,
|
|
36
36
|
})
|
|
37
|
-
.option('tenantId', {
|
|
38
|
-
describe: 'Tenant ID',
|
|
39
|
-
alias: 't',
|
|
40
|
-
string: true,
|
|
41
|
-
})
|
|
42
|
-
.option('environmentId', {
|
|
43
|
-
describe: 'Environment ID',
|
|
44
|
-
alias: 'e',
|
|
45
|
-
string: true,
|
|
46
|
-
})
|
|
47
37
|
.option('piletArtifactPath', {
|
|
48
|
-
describe:
|
|
38
|
+
describe:
|
|
39
|
+
'Path to the pilet artifact .tgz file or a directory containing the .tgz file',
|
|
49
40
|
alias: 'p',
|
|
50
41
|
string: true,
|
|
51
42
|
})
|
|
@@ -68,7 +59,12 @@ const piletRegister: CommandModule<unknown, GetRegisterPiletOptions> = {
|
|
|
68
59
|
},
|
|
69
60
|
handler: async (args) => {
|
|
70
61
|
// Validate arguments and read any arguments that are coming from environment variables.
|
|
71
|
-
const validatedArgs = validateArgs(args);
|
|
72
|
-
|
|
62
|
+
const [validatedArgs, errorMessages] = validateArgs(args);
|
|
63
|
+
|
|
64
|
+
if (errorMessages.length > 0) {
|
|
65
|
+
console.log(errorMessages);
|
|
66
|
+
} else {
|
|
67
|
+
await registerPilet(validatedArgs);
|
|
68
|
+
}
|
|
73
69
|
},
|
|
74
70
|
};
|
|
@@ -5,8 +5,6 @@ export interface GetRegisterPiletOptions {
|
|
|
5
5
|
serviceId?: string;
|
|
6
6
|
mosaicHostingClientId?: string;
|
|
7
7
|
mosaicHostingClientSecret?: string;
|
|
8
|
-
tenantId?: string;
|
|
9
|
-
environmentId?: string;
|
|
10
8
|
piletArtifactPath?: string;
|
|
11
9
|
idServiceAuthBaseURL?: string;
|
|
12
10
|
microFrontendServiceBaseURL?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getServiceAccountToken } from '@axinom/mosaic-id-link-be';
|
|
1
|
+
import { TokenResult, getServiceAccountToken } from '@axinom/mosaic-id-link-be';
|
|
2
2
|
import { isNullOrWhitespace } from '@axinom/mosaic-service-common';
|
|
3
3
|
import axios, { AxiosError } from 'axios';
|
|
4
4
|
import * as FormData from 'form-data';
|
|
@@ -9,11 +9,30 @@ import { GetRegisterPiletOptions } from './register-pilet-options';
|
|
|
9
9
|
export const registerPilet = async (
|
|
10
10
|
args: Required<GetRegisterPiletOptions>,
|
|
11
11
|
): Promise<void> => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
let serviceAccountToken: TokenResult | undefined;
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
serviceAccountToken = await getServiceAccountToken(
|
|
16
|
+
args.idServiceAuthBaseURL,
|
|
17
|
+
args.mosaicHostingClientId,
|
|
18
|
+
args.mosaicHostingClientSecret,
|
|
19
|
+
);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
console.log(
|
|
22
|
+
`\nFailed to get the service account token. ${
|
|
23
|
+
(error as Error).message
|
|
24
|
+
}\n`,
|
|
25
|
+
);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Extract the tenant/environment IDs from the access token
|
|
30
|
+
const { tenantId, environmentId } = JSON.parse(
|
|
31
|
+
Buffer.from(
|
|
32
|
+
serviceAccountToken.accessToken.split('.')[1],
|
|
33
|
+
'base64',
|
|
34
|
+
).toString(),
|
|
35
|
+
) as { tenantId: string; environmentId: string };
|
|
17
36
|
|
|
18
37
|
const data = new FormData();
|
|
19
38
|
|
|
@@ -27,20 +46,21 @@ export const registerPilet = async (
|
|
|
27
46
|
|
|
28
47
|
try {
|
|
29
48
|
const artifactToPublish = findArtifactToPublish(args.piletArtifactPath);
|
|
30
|
-
|
|
31
|
-
data.append('', createReadStream(artifactToPublish));
|
|
32
|
-
} else {
|
|
33
|
-
throw new Error(`No Pilet Artifact found at ${args.piletArtifactPath}.`);
|
|
34
|
-
}
|
|
49
|
+
data.append('', createReadStream(artifactToPublish));
|
|
35
50
|
} catch (error) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
);
|
|
51
|
+
console.log(`\n${(error as Error).message}`);
|
|
52
|
+
return;
|
|
39
53
|
}
|
|
40
54
|
|
|
41
55
|
try {
|
|
56
|
+
console.log(`\nRegistering pilet...`);
|
|
57
|
+
console.log(`path:\t\t${args.piletArtifactPath}`);
|
|
58
|
+
console.log(`tenantId:\t${tenantId}`);
|
|
59
|
+
console.log(`environmentId:\t${environmentId}`);
|
|
60
|
+
console.log(`serviceId:\t${args.serviceId}\n`);
|
|
61
|
+
|
|
42
62
|
const result = await axios.post(
|
|
43
|
-
`${args.microFrontendServiceBaseURL}/v1/pilets/${
|
|
63
|
+
`${args.microFrontendServiceBaseURL}/v1/pilets/${tenantId}/${environmentId}/${args.serviceId}/register?override=${args.overrideRegistration}`,
|
|
44
64
|
data,
|
|
45
65
|
config,
|
|
46
66
|
);
|
|
@@ -52,6 +72,7 @@ export const registerPilet = async (
|
|
|
52
72
|
'Registration of Pilet failed.',
|
|
53
73
|
(error as AxiosError).response?.data ?? (error as Error).message,
|
|
54
74
|
);
|
|
75
|
+
return;
|
|
55
76
|
}
|
|
56
77
|
};
|
|
57
78
|
|
|
@@ -64,82 +85,93 @@ export const registerPilet = async (
|
|
|
64
85
|
*/
|
|
65
86
|
export const validateArgs = (
|
|
66
87
|
args: GetRegisterPiletOptions,
|
|
67
|
-
): Required<GetRegisterPiletOptions
|
|
88
|
+
): [Required<GetRegisterPiletOptions>, string[]] => {
|
|
89
|
+
const errorMessages: string[] = [];
|
|
90
|
+
|
|
68
91
|
const idServiceAuthBaseURL =
|
|
69
|
-
args.idServiceAuthBaseURL ?? process.env.ID_SERVICE_AUTH_BASE_URL;
|
|
92
|
+
args.idServiceAuthBaseURL ?? process.env.ID_SERVICE_AUTH_BASE_URL ?? '';
|
|
70
93
|
const mosaicHostingClientId =
|
|
71
|
-
args.mosaicHostingClientId ?? process.env.MOSAIC_HOSTING_CLIENT_ID;
|
|
94
|
+
args.mosaicHostingClientId ?? process.env.MOSAIC_HOSTING_CLIENT_ID ?? '';
|
|
72
95
|
const mosaicHostingClientSecret =
|
|
73
|
-
args.mosaicHostingClientSecret ??
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const serviceId = args.serviceId ?? process.env.SERVICE_ID;
|
|
77
|
-
const piletArtifactPath =
|
|
96
|
+
args.mosaicHostingClientSecret ??
|
|
97
|
+
process.env.MOSAIC_HOSTING_CLIENT_SECRET ??
|
|
98
|
+
'';
|
|
99
|
+
const serviceId = args.serviceId ?? process.env.SERVICE_ID ?? '';
|
|
100
|
+
const piletArtifactPath =
|
|
101
|
+
args.piletArtifactPath ?? process.env.PILET_PATH ?? '';
|
|
78
102
|
const microFrontendServiceBaseURL =
|
|
79
103
|
args.microFrontendServiceBaseURL ??
|
|
80
|
-
process.env.MICRO_FRONTEND_SERVICE_BASE_URL
|
|
104
|
+
process.env.MICRO_FRONTEND_SERVICE_BASE_URL ??
|
|
105
|
+
'';
|
|
81
106
|
|
|
82
107
|
if (isNullOrWhitespace(idServiceAuthBaseURL)) {
|
|
83
|
-
|
|
108
|
+
errorMessages.push('[idServiceAuthBaseURL] is required.');
|
|
84
109
|
}
|
|
85
110
|
if (isNullOrWhitespace(mosaicHostingClientId)) {
|
|
86
|
-
|
|
111
|
+
errorMessages.push('[clientId] is required.');
|
|
87
112
|
}
|
|
88
113
|
if (isNullOrWhitespace(mosaicHostingClientSecret)) {
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
if (isNullOrWhitespace(tenantId)) {
|
|
92
|
-
throw new Error('tenantId is required.');
|
|
93
|
-
}
|
|
94
|
-
if (isNullOrWhitespace(environmentId)) {
|
|
95
|
-
throw new Error('environmentId is required,');
|
|
114
|
+
errorMessages.push('[clientSecret] is required.');
|
|
96
115
|
}
|
|
97
116
|
if (isNullOrWhitespace(serviceId)) {
|
|
98
|
-
|
|
117
|
+
errorMessages.push('[serviceId] is required.');
|
|
99
118
|
}
|
|
100
119
|
if (isNullOrWhitespace(piletArtifactPath)) {
|
|
101
|
-
|
|
120
|
+
errorMessages.push('[piletArtifactPath] is required,');
|
|
102
121
|
}
|
|
103
122
|
if (isNullOrWhitespace(microFrontendServiceBaseURL)) {
|
|
104
|
-
|
|
123
|
+
errorMessages.push('[microFrontendServiceBaseURL] is required.');
|
|
105
124
|
}
|
|
106
125
|
|
|
107
|
-
return
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
126
|
+
return [
|
|
127
|
+
{
|
|
128
|
+
idServiceAuthBaseURL,
|
|
129
|
+
mosaicHostingClientId,
|
|
130
|
+
mosaicHostingClientSecret,
|
|
131
|
+
serviceId,
|
|
132
|
+
piletArtifactPath,
|
|
133
|
+
microFrontendServiceBaseURL,
|
|
134
|
+
overrideRegistration: args.overrideRegistration ?? false,
|
|
135
|
+
},
|
|
136
|
+
errorMessages,
|
|
137
|
+
];
|
|
118
138
|
};
|
|
119
139
|
|
|
120
|
-
const findArtifactToPublish = (piletPath: string): string
|
|
140
|
+
const findArtifactToPublish = (piletPath: string): string => {
|
|
121
141
|
if (!existsSync(piletPath)) {
|
|
122
|
-
throw new Error(
|
|
142
|
+
throw new Error(
|
|
143
|
+
`The specified pilet artifact path [${piletPath}] does not exist.`,
|
|
144
|
+
);
|
|
123
145
|
}
|
|
124
146
|
|
|
125
|
-
const files = readdirSync(piletPath);
|
|
126
147
|
const tgzFiles: string[] = [];
|
|
127
148
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
149
|
+
// Is the path a directory?
|
|
150
|
+
if (lstatSync(piletPath).isDirectory()) {
|
|
151
|
+
const files = readdirSync(piletPath);
|
|
152
|
+
|
|
153
|
+
for (let i = 0; i < files.length; i++) {
|
|
154
|
+
const filename = path.join(piletPath, files[i]);
|
|
155
|
+
const stat = lstatSync(filename);
|
|
156
|
+
if (!stat.isDirectory() && filename.endsWith('.tgz')) {
|
|
157
|
+
tgzFiles.push(filename);
|
|
158
|
+
}
|
|
133
159
|
}
|
|
160
|
+
} // Path is a file
|
|
161
|
+
else {
|
|
162
|
+
tgzFiles.push(piletPath);
|
|
134
163
|
}
|
|
135
164
|
|
|
136
165
|
if (tgzFiles.length > 1) {
|
|
137
166
|
throw new Error(
|
|
138
|
-
`Found more than one .tgz files in the folder ${piletPath}. Please make sure only one .tgz file exists
|
|
167
|
+
`Found more than one .tgz files in the folder [${piletPath}]. Please make sure only one .tgz file exists or specify the path to the .tgz file.`,
|
|
139
168
|
);
|
|
140
169
|
}
|
|
170
|
+
|
|
141
171
|
if (tgzFiles.length === 0) {
|
|
142
|
-
throw new Error(
|
|
172
|
+
throw new Error(
|
|
173
|
+
`No .tgz files found at pilet artifact path [${piletPath}].`,
|
|
174
|
+
);
|
|
143
175
|
}
|
|
144
176
|
|
|
145
177
|
return tgzFiles[0];
|