@steedos/service-package-registry 2.5.14-beta.7 → 2.5.14-beta.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.
|
@@ -159,7 +159,7 @@ const isPackage = (name)=>{
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
const loadDependency = async (mainPackageInfo, dependencyName, dependencyVersion)=>{
|
|
162
|
+
const loadDependency = async (mainPackageInfo = {}, dependencyName, dependencyVersion)=>{
|
|
163
163
|
// console.log(`loadDependency`, mainPackageInfo, dependencyName, dependencyVersion)
|
|
164
164
|
if(mainPackageInfo.static == true){
|
|
165
165
|
return ;
|
|
@@ -184,9 +184,22 @@ const scanPackageMetadatas = async (packagePath) => {
|
|
|
184
184
|
return packageMetadatas;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
+
const checkDependencies = async (packagePath)=>{
|
|
188
|
+
const packageServiceConfig = require(path.join(packagePath, 'package.service.js'));
|
|
189
|
+
const dependencies = packageServiceConfig?.dependencies || [];
|
|
190
|
+
for(const item of dependencies){
|
|
191
|
+
const hasService = await objectql.getSteedosSchema().broker.registry.hasService(item);
|
|
192
|
+
if(!hasService){
|
|
193
|
+
throw new Error(`依赖项${item}未启动, 请先启动依赖项`)
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
|
|
187
199
|
module.exports = {
|
|
188
200
|
maintainSystemFiles,
|
|
189
201
|
getAllPackages,
|
|
190
202
|
getPackageVersions,
|
|
191
|
-
scanPackageMetadatas
|
|
203
|
+
scanPackageMetadatas,
|
|
204
|
+
checkDependencies
|
|
192
205
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-package-registry",
|
|
3
|
-
"version": "2.5.14-beta.
|
|
3
|
+
"version": "2.5.14-beta.8",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "package.service.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"author": "",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@steedos/auth": "2.5.14-beta.
|
|
13
|
-
"@steedos/core": "2.5.14-beta.
|
|
14
|
-
"@steedos/metadata-core": "2.5.14-beta.
|
|
15
|
-
"@steedos/objectql": "2.5.14-beta.
|
|
16
|
-
"@steedos/service-package-loader": "2.5.14-beta.
|
|
12
|
+
"@steedos/auth": "2.5.14-beta.8",
|
|
13
|
+
"@steedos/core": "2.5.14-beta.8",
|
|
14
|
+
"@steedos/metadata-core": "2.5.14-beta.8",
|
|
15
|
+
"@steedos/objectql": "2.5.14-beta.8",
|
|
16
|
+
"@steedos/service-package-loader": "2.5.14-beta.8",
|
|
17
17
|
"fs-extra": "8.1.0",
|
|
18
18
|
"i18next": "20.3.2",
|
|
19
19
|
"json-stringify-safe": "5.0.1",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "9e2b4ac59a9a1700158c0d132b4cbc9ae4931bec"
|
|
35
35
|
}
|
|
@@ -148,6 +148,7 @@ module.exports = {
|
|
|
148
148
|
if(packageConfig.static){
|
|
149
149
|
packageConfig = Object.assign({}, packageConfig, this.getStaticPackageInfo(packageConfig, packageConfig.name))
|
|
150
150
|
}
|
|
151
|
+
await checkDependencies(util.getPackageRelativePath(process.cwd(), packageConfig.path))
|
|
151
152
|
const metadata = await loader.getPackageMetadata(util.getPackageRelativePath(process.cwd(), packageConfig.path));
|
|
152
153
|
await ctx.broker.call(`@steedos/service-packages.install`, {
|
|
153
154
|
serviceInfo: Object.assign({}, packageConfig, {
|
|
@@ -178,9 +179,9 @@ module.exports = {
|
|
|
178
179
|
if(!user.is_space_admin){
|
|
179
180
|
throw new Error('not permission!');
|
|
180
181
|
}
|
|
181
|
-
let { module, version, url, auth, registry_url } = ctx.params
|
|
182
|
+
let { module, version, url, auth, registry_url, fromClient = false } = ctx.params
|
|
182
183
|
const enable = true;
|
|
183
|
-
return await this.installPackageFromUrl(module, version, url, auth, enable, registry_url, ctx.broker)
|
|
184
|
+
return await this.installPackageFromUrl(module, version, url, auth, enable, registry_url, ctx.broker, {fromClient})
|
|
184
185
|
} catch (error) {
|
|
185
186
|
let errorInfo = error.message || '';
|
|
186
187
|
if (error.stderr) {
|
|
@@ -265,7 +266,7 @@ module.exports = {
|
|
|
265
266
|
}
|
|
266
267
|
},
|
|
267
268
|
installPackageFromUrl: {
|
|
268
|
-
async handler(module, version, url, auth, enable, registry_url, broker) {
|
|
269
|
+
async handler(module, version, url, auth, enable, registry_url, broker, {fromClient}) {
|
|
269
270
|
if(!module || !_.isString(module) || !module.trim()){
|
|
270
271
|
throw new Error(`无效的软件包名称`);
|
|
271
272
|
} else {
|
|
@@ -290,6 +291,9 @@ module.exports = {
|
|
|
290
291
|
const packageInfo = loader.getPackageInfo(null, packagePath);
|
|
291
292
|
const packageName = packageInfo.name;
|
|
292
293
|
if(enable){
|
|
294
|
+
if(fromClient){
|
|
295
|
+
await packages.checkDependencies(packagePath)
|
|
296
|
+
}
|
|
293
297
|
await loader.loadPackage(packageName, packagePath);
|
|
294
298
|
}else{
|
|
295
299
|
enable = false;
|