Skip to content

Commit c20e218

Browse files
committed
Support metadata loading from list in API (#28)
1 parent 708f8ec commit c20e218

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

src/packages.js

+14-8
Original file line numberDiff line numberDiff line change
@@ -150,22 +150,28 @@ class Packages {
150150

151151
/**
152152
* Reads package manifests
153+
* @param {string[]} paths
154+
* @param {object} user
153155
* @return {Package[]} List of packages
154156
*/
155-
async readPackageManifests(user) {
157+
async readPackageManifests(paths, user) {
156158
const {realpath} = this.core.make('osjs/vfs');
157159
const {manifestFile} = this.options;
158-
const homePath = await realpath('home:/.packages/metadata.json', user);
159-
160160
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+
}));
162171

163172
return [
164173
...systemManifest,
165-
...userManifest.map(pkg => Object.assign({}, pkg, {
166-
_user: true,
167-
server: null
168-
}))
174+
...[].concat(...userManifests)
169175
];
170176
}
171177

src/providers/packages.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class PackageServiceProvider extends ServiceProvider {
7373
this.core.singleton('osjs/packages', () => this.packages);
7474

7575
routeAuthenticated('GET', '/api/packages/manifest', (req, res) => {
76-
this.packages.readPackageManifests(req.session.user)
76+
this.packages.readPackageManifests(req.query.root || [], req.session.user)
7777
.then(json => res.json(json))
7878
.catch(error => res.status(400).json({error}));
7979
});

0 commit comments

Comments
 (0)