File tree 2 files changed +15
-9
lines changed
2 files changed +15
-9
lines changed Original file line number Diff line number Diff line change @@ -150,22 +150,28 @@ class Packages {
150
150
151
151
/**
152
152
* Reads package manifests
153
+ * @param {string[] } paths
154
+ * @param {object } user
153
155
* @return {Package[] } List of packages
154
156
*/
155
- async readPackageManifests ( user ) {
157
+ async readPackageManifests ( paths , user ) {
156
158
const { realpath} = this . core . make ( 'osjs/vfs' ) ;
157
159
const { manifestFile} = this . options ;
158
- const homePath = await realpath ( 'home:/.packages/metadata.json' , user ) ;
159
-
160
160
const systemManifest = await readOrDefault ( manifestFile ) ;
161
- const userManifest = await readOrDefault ( homePath ) ;
161
+
162
+ const userManifests = await Promise . all ( paths . map ( async p => {
163
+ const real = await realpath ( `${ p } /metadata.json` , user ) ;
164
+ const list = await readOrDefault ( real ) ;
165
+
166
+ return list . map ( pkg => Object . assign ( { } , pkg , {
167
+ _vfs : p ,
168
+ server : null
169
+ } ) ) ;
170
+ } ) ) ;
162
171
163
172
return [
164
173
...systemManifest ,
165
- ...userManifest . map ( pkg => Object . assign ( { } , pkg , {
166
- _user : true ,
167
- server : null
168
- } ) )
174
+ ...[ ] . concat ( ...userManifests )
169
175
] ;
170
176
}
171
177
Original file line number Diff line number Diff line change @@ -73,7 +73,7 @@ class PackageServiceProvider extends ServiceProvider {
73
73
this . core . singleton ( 'osjs/packages' , ( ) => this . packages ) ;
74
74
75
75
routeAuthenticated ( 'GET' , '/api/packages/manifest' , ( req , res ) => {
76
- this . packages . readPackageManifests ( req . session . user )
76
+ this . packages . readPackageManifests ( req . query . root || [ ] , req . session . user )
77
77
. then ( json => res . json ( json ) )
78
78
. catch ( error => res . status ( 400 ) . json ( { error} ) ) ;
79
79
} ) ;
You can’t perform that action at this time.
0 commit comments