-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
/
update-core.js
62 lines (52 loc) · 1.56 KB
/
update-core.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var childProcess = require('child_process');
var fs = require('fs-extra');
var glob = require('glob');
var path = require('path');
var sortPackageJson = require('sort-package-json');
var Build = require('@jupyterlab/buildutils').Build;
var corePackage = require('./package.json');
corePackage.jupyterlab.extensions = {};
corePackage.jupyterlab.mimeExtensions = {};
corePackage.dependencies = {};
var basePath = path.resolve('..');
var packages = glob.sync(path.join(basePath, 'packages/*'));
packages.forEach(function(packagePath) {
var dataPath = path.join(packagePath, 'package.json');
try {
var data = require(dataPath);
} catch (e) {
return;
}
if (data.private === true) {
return;
}
// Make sure it is included as a dependency.
corePackage.dependencies[data.name] = '^' + String(data.version);
var jlab = data.jupyterlab;
if (!jlab) {
return;
}
// Add its dependencies to the core dependencies.
var deps = data.dependencies || [];
for (var dep in deps) {
corePackage.dependencies[dep] = deps[dep];
}
// Handle extensions.
['extension', 'mimeExtension'].forEach(function(item) {
var ext = jlab[item];
if (ext === true) {
ext = ''
}
if (typeof ext !== 'string') {
return;
}
corePackage.jupyterlab[item + 's'][data.name] = ext;
});
});
Build.ensureAssets({
packageNames: Object.keys(corePackage.jupyterlab.extensions),
output: '.'
});
// Write the package.json back to disk.
var text = JSON.stringify(sortPackageJson(corePackage), null, 2) + '\n';
fs.writeFileSync('./package.json', text);