Browse Source

Move update-core to integrity

Steven Silvester 7 years ago
parent
commit
f76338b62a
5 changed files with 153 additions and 136 deletions
  1. 54 54
      jupyterlab/package.json
  2. 0 69
      jupyterlab/update-core.js
  3. 3 0
      jupyterlab/webpack.config.js
  4. 3 4
      package.json
  5. 93 9
      scripts/src/ensure-integrity.ts

+ 54 - 54
jupyterlab/package.json

@@ -3,11 +3,11 @@
   "version": "0.11.1",
   "private": true,
   "scripts": {
-    "build": "npm run clean && node update-core.js && webpack",
-    "build:prod": "node update-core.js && webpack --devtool source-map",
+    "build": "webpack",
+    "build:prod": "webpack --devtool source-map",
     "build:static": "node make-release.js",
     "clean": "rimraf build",
-    "watch": "node update-core.js && webpack --watch"
+    "watch": "webpack --watch"
   },
   "dependencies": {
     "@jupyterlab/application": "^0.11.1",
@@ -133,57 +133,57 @@
     ],
     "version": "0.29.0.dev0",
     "linkedPackages": {
-      "@jupyterlab/application": "../packages/application",
-      "@jupyterlab/application-extension": "../packages/application-extension",
-      "@jupyterlab/apputils": "../packages/apputils",
-      "@jupyterlab/apputils-extension": "../packages/apputils-extension",
-      "@jupyterlab/buildutils": "../packages/buildutils",
-      "@jupyterlab/cells": "../packages/cells",
-      "@jupyterlab/codeeditor": "../packages/codeeditor",
-      "@jupyterlab/codemirror": "../packages/codemirror",
-      "@jupyterlab/codemirror-extension": "../packages/codemirror-extension",
-      "@jupyterlab/completer": "../packages/completer",
-      "@jupyterlab/completer-extension": "../packages/completer-extension",
-      "@jupyterlab/console": "../packages/console",
-      "@jupyterlab/console-extension": "../packages/console-extension",
-      "@jupyterlab/coreutils": "../packages/coreutils",
-      "@jupyterlab/csvviewer": "../packages/csvviewer",
-      "@jupyterlab/csvviewer-extension": "../packages/csvviewer-extension",
-      "@jupyterlab/docmanager": "../packages/docmanager",
-      "@jupyterlab/docmanager-extension": "../packages/docmanager-extension",
-      "@jupyterlab/docregistry": "../packages/docregistry",
-      "@jupyterlab/faq-extension": "../packages/faq-extension",
-      "@jupyterlab/filebrowser": "../packages/filebrowser",
-      "@jupyterlab/filebrowser-extension": "../packages/filebrowser-extension",
-      "@jupyterlab/fileeditor": "../packages/fileeditor",
-      "@jupyterlab/fileeditor-extension": "../packages/fileeditor-extension",
-      "@jupyterlab/help-extension": "../packages/help-extension",
-      "@jupyterlab/imageviewer": "../packages/imageviewer",
-      "@jupyterlab/imageviewer-extension": "../packages/imageviewer-extension",
-      "@jupyterlab/inspector": "../packages/inspector",
-      "@jupyterlab/inspector-extension": "../packages/inspector-extension",
-      "@jupyterlab/launcher": "../packages/launcher",
-      "@jupyterlab/launcher-extension": "../packages/launcher-extension",
-      "@jupyterlab/markdownviewer-extension": "../packages/markdownviewer-extension",
-      "@jupyterlab/notebook": "../packages/notebook",
-      "@jupyterlab/notebook-extension": "../packages/notebook-extension",
-      "@jupyterlab/outputarea": "../packages/outputarea",
-      "@jupyterlab/pdf-extension": "../packages/pdf-extension",
-      "@jupyterlab/rendermime": "../packages/rendermime",
-      "@jupyterlab/rendermime-interfaces": "../packages/rendermime-interfaces",
-      "@jupyterlab/running": "../packages/running",
-      "@jupyterlab/running-extension": "../packages/running-extension",
-      "@jupyterlab/services": "../packages/services",
-      "@jupyterlab/settingeditor-extension": "../packages/settingeditor-extension",
-      "@jupyterlab/shortcuts-extension": "../packages/shortcuts-extension",
-      "@jupyterlab/tabmanager-extension": "../packages/tabmanager-extension",
-      "@jupyterlab/terminal": "../packages/terminal",
-      "@jupyterlab/terminal-extension": "../packages/terminal-extension",
-      "@jupyterlab/theme-dark-extension": "../packages/theme-dark-extension",
-      "@jupyterlab/theme-light-extension": "../packages/theme-light-extension",
-      "@jupyterlab/tooltip": "../packages/tooltip",
-      "@jupyterlab/tooltip-extension": "../packages/tooltip-extension",
-      "@jupyterlab/vega2-extension": "../packages/vega2-extension"
+      "@jupyterlab/application": "../packagesapplication",
+      "@jupyterlab/application-extension": "../packagesapplication-extension",
+      "@jupyterlab/apputils": "../packagesapputils",
+      "@jupyterlab/apputils-extension": "../packagesapputils-extension",
+      "@jupyterlab/buildutils": "../packagesbuildutils",
+      "@jupyterlab/cells": "../packagescells",
+      "@jupyterlab/codeeditor": "../packagescodeeditor",
+      "@jupyterlab/codemirror": "../packagescodemirror",
+      "@jupyterlab/codemirror-extension": "../packagescodemirror-extension",
+      "@jupyterlab/completer": "../packagescompleter",
+      "@jupyterlab/completer-extension": "../packagescompleter-extension",
+      "@jupyterlab/console": "../packagesconsole",
+      "@jupyterlab/console-extension": "../packagesconsole-extension",
+      "@jupyterlab/coreutils": "../packagescoreutils",
+      "@jupyterlab/csvviewer": "../packagescsvviewer",
+      "@jupyterlab/csvviewer-extension": "../packagescsvviewer-extension",
+      "@jupyterlab/docmanager": "../packagesdocmanager",
+      "@jupyterlab/docmanager-extension": "../packagesdocmanager-extension",
+      "@jupyterlab/docregistry": "../packagesdocregistry",
+      "@jupyterlab/faq-extension": "../packagesfaq-extension",
+      "@jupyterlab/filebrowser": "../packagesfilebrowser",
+      "@jupyterlab/filebrowser-extension": "../packagesfilebrowser-extension",
+      "@jupyterlab/fileeditor": "../packagesfileeditor",
+      "@jupyterlab/fileeditor-extension": "../packagesfileeditor-extension",
+      "@jupyterlab/help-extension": "../packageshelp-extension",
+      "@jupyterlab/imageviewer": "../packagesimageviewer",
+      "@jupyterlab/imageviewer-extension": "../packagesimageviewer-extension",
+      "@jupyterlab/inspector": "../packagesinspector",
+      "@jupyterlab/inspector-extension": "../packagesinspector-extension",
+      "@jupyterlab/launcher": "../packageslauncher",
+      "@jupyterlab/launcher-extension": "../packageslauncher-extension",
+      "@jupyterlab/markdownviewer-extension": "../packagesmarkdownviewer-extension",
+      "@jupyterlab/notebook": "../packagesnotebook",
+      "@jupyterlab/notebook-extension": "../packagesnotebook-extension",
+      "@jupyterlab/outputarea": "../packagesoutputarea",
+      "@jupyterlab/pdf-extension": "../packagespdf-extension",
+      "@jupyterlab/rendermime": "../packagesrendermime",
+      "@jupyterlab/rendermime-interfaces": "../packagesrendermime-interfaces",
+      "@jupyterlab/running": "../packagesrunning",
+      "@jupyterlab/running-extension": "../packagesrunning-extension",
+      "@jupyterlab/services": "../packagesservices",
+      "@jupyterlab/settingeditor-extension": "../packagessettingeditor-extension",
+      "@jupyterlab/shortcuts-extension": "../packagesshortcuts-extension",
+      "@jupyterlab/tabmanager-extension": "../packagestabmanager-extension",
+      "@jupyterlab/terminal": "../packagesterminal",
+      "@jupyterlab/terminal-extension": "../packagesterminal-extension",
+      "@jupyterlab/theme-dark-extension": "../packagestheme-dark-extension",
+      "@jupyterlab/theme-light-extension": "../packagestheme-light-extension",
+      "@jupyterlab/tooltip": "../packagestooltip",
+      "@jupyterlab/tooltip-extension": "../packagestooltip-extension",
+      "@jupyterlab/vega2-extension": "../packagesvega2-extension"
     }
   }
 }

+ 0 - 69
jupyterlab/update-core.js

@@ -1,69 +0,0 @@
-var childProcess = require('child_process');
-var fs = require('fs-extra');
-var glob = require('glob');
-var path = require('path');
-var sortPackageJson = require('sort-package-json');
-
-// Get the current version of JupyterLab
-var cwd = path.resolve('..');
-var version = childProcess.execSync('python setup.py --version', { cwd: cwd });
-version = version.toString().trim();
-
-var corePackage = require('./package.json');
-corePackage.jupyterlab.extensions = {};
-corePackage.jupyterlab.mimeExtensions = {};
-corePackage.jupyterlab.version = version;
-corePackage.jupyterlab.linkedPackages = {};
-corePackage.dependencies = {};
-
-var singletonPackages = corePackage.jupyterlab.singletonPackages;
-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 relativePath = '../packages/' + path.basename(packagePath);
-  corePackage.jupyterlab.linkedPackages[data.name] = relativePath;
-
-  // Add its dependencies to the core dependencies if they are in the
-  // singleton packages.
-  var deps = data.dependencies || [];
-  for (var dep in deps) {
-    if (singletonPackages.indexOf(dep) !== -1) {
-      corePackage.dependencies[dep] = deps[dep];
-    }
-  }
-
-  var jlab = data.jupyterlab;
-  if (!jlab) {
-    return;
-  }
-
-  // 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;
-  });
-});
-
-// Write the package.json back to disk.
-var text = JSON.stringify(sortPackageJson(corePackage), null, 2) + '\n';
-fs.writeFileSync('./package.json', text);

+ 3 - 0
jupyterlab/webpack.config.js

@@ -8,6 +8,9 @@ var Build = require('@jupyterlab/buildutils').Build;
 
 // Ensure a clear build directory.
 var buildDir = './build';
+if (fs.existsSync(buildDir)) {
+  fs.removeSync(buildDir);
+}
 fs.ensureDirSync(buildDir);
 
 fs.copySync('./package.json', './build/package.json');

+ 3 - 4
package.json

@@ -2,7 +2,7 @@
   "private": true,
   "scripts": {
     "addsibling": "node scripts/lib/add-sibling.js",
-    "build": "npm run build:scripts && npm run build:packages && cd jupyterlab && npm run build",
+    "build": "npm run build:packages && cd jupyterlab && npm run build",
     "build:examples": "lerna run build --scope \"@jupyterlab/example-*\"",
     "build:main": "npm run build",
     "build:main:prod": "npm run build:packages && cd jupyterlab && npm run build:prod",
@@ -20,8 +20,8 @@
     "coverage": "lerna run coverage --stream",
     "docs": "lerna run docs",
     "get:dependency": "node scripts/lib/get-dependency.js",
-    "install": "lerna bootstrap --hoist",
-    "integrity": "node scripts/lib/ensure-integrity.js",
+    "install": "lerna bootstrap --hoist && npm run build:scripts",
+    "integrity": "node scripts/lib/update-packages.js",
     "patch:release": "node scripts/lib/patch-release.js",
     "publish": "npm run clean:slate && lerna publish --force-publish=* -m \"Publish\"",
     "remove:dependency": "node scripts/lib/remove-dependency.js",
@@ -31,7 +31,6 @@
     "test:firefox": "lerna run test:firefox --stream",
     "test:ie": "lerna run test:ie --concurrency 1 --stream",
     "test:services": "cd packages/services && npm test && npm run test:integration && cd examples/node && python main.py",
-    "update:core": "npm run integrity && cd jupyterlab && node update-core.js",
     "update:dependency": "node scripts/lib/update-dependency.js",
     "watch": "run-p watch:*",
     "watch:main": "cd jupyterlab && npm run watch",

+ 93 - 9
scripts/src/ensure-integrity.ts

@@ -6,6 +6,7 @@
  * Ensure a consistent version of all packages.
  * Manage the all-packages meta package.
  */
+import childProcess = require('child_process');
 import path = require('path');
 import glob = require('glob');
 import ts = require('typescript');
@@ -48,7 +49,7 @@ function ensurePackage(pkgName: string): string[] {
       seenDeps[name] = getDependency.getDependency(name);
     }
     if (deps[name] !== seenDeps[name]) {
-      messages.push('Updated package: ' + name);
+      messages.push('Updated dependency: ' + name);
     }
     deps[name] = seenDeps[name];
   });
@@ -58,8 +59,8 @@ function ensurePackage(pkgName: string): string[] {
     if (!(name in seenDeps)) {
       seenDeps[name] = getDependency.getDependency(name);
     }
-    if (deps[name] !== seenDeps[name]) {
-      messages.push('Updated package: ' + name);
+    if (devDeps[name] !== seenDeps[name]) {
+      messages.push('Updated devDependency: ' + name);
     }
     devDeps[name] = seenDeps[name];
   });
@@ -211,6 +212,77 @@ function ensureAllPackages(): string[] {
 }
 
 
+/**
+ * Ensure the jupyterlab application package.
+ */
+function ensureJupyterlab(): string[] {
+  // Get the current version of JupyterLab
+  let cmd = 'python setup.py --version';
+  let version = String(childProcess.execSync(cmd)).trim();
+
+  let basePath = path.resolve('.');
+  let corePath = path.join(basePath, 'jupyterlab', 'package.json');
+  let corePackage = require(corePath);
+
+  corePackage.jupyterlab.extensions = {};
+  corePackage.jupyterlab.mimeExtensions = {};
+  corePackage.jupyterlab.version = version;
+  corePackage.jupyterlab.linkedPackages = {};
+  corePackage.dependencies = {};
+
+  let singletonPackages = corePackage.jupyterlab.singletonPackages;
+
+  utils.getCorePaths().forEach(pkgPath => {
+    let dataPath = path.join(pkgPath, 'package.json');
+    let data: any;
+    try {
+       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);
+    let relativePath = path.join('..', 'packages' + path.basename(pkgPath));
+    corePackage.jupyterlab.linkedPackages[data.name] = relativePath;
+    // Add its dependencies to the core dependencies if they are in the
+    // singleton packages.
+    let deps = data.dependencies || {};
+    for (let dep in deps) {
+      if (singletonPackages.indexOf(dep) !== -1) {
+        corePackage.dependencies[dep] = deps[dep];
+      }
+    }
+
+    let jlab = data.jupyterlab;
+    if (!jlab) {
+      return;
+    }
+
+    // Handle extensions.
+    ['extension', 'mimeExtension'].forEach(item => {
+      let ext = jlab[item];
+      if (ext === true) {
+        ext = '';
+      }
+      if (typeof ext !== 'string') {
+        return;
+      }
+      corePackage.jupyterlab[item + 's'][data.name] = ext;
+    });
+  });
+
+  // Write the package.json back to disk.
+  if (utils.ensurePackageData(corePackage, corePath)) {
+    return ['Updated core'];
+  }
+  return [];
+}
+
+
 /**
  * Ensure the repo integrity.
  */
@@ -244,17 +316,27 @@ function ensureIntegrity(): void {
   let corePath: string = path.resolve('.', 'package.json');
   let coreData: any = require(corePath);
   if (utils.ensurePackageData(coreData, corePath)) {
-    messages['baz'] = 'buzz'
+    messages['baz'] = ['buzz'];
   }
 
   // Handle the all-packages metapackage.
   let pkgMessages = ensureAllPackages();
   if (pkgMessages.length > 0) {
-    let allName ='@jupyterlab/all-packages';
-    if (!messages[allName]) {
-      messages[allName] = [];
+    let pkgName ='@jupyterlab/all-packages';
+    if (!messages[pkgName]) {
+      messages[pkgName] = [];
     }
-    messages[allName] = messages[allName].concat(pkgMessages);
+    messages[pkgName] = messages[pkgName].concat(pkgMessages);
+  }
+
+  // Handle the JupyterLab application top package.
+  pkgMessages = ensureJupyterlab();
+  if (pkgMessages.length > 0) {
+    let pkgName = '@jupyterlab/application-top';
+    if (!messages[pkgName]) {
+      messages[pkgName] = [];
+    }
+    messages[pkgName] = messages[pkgName].concat(pkgMessages);
   }
 
   // Handle any messages.
@@ -266,7 +348,9 @@ function ensureIntegrity(): void {
       console.log('\n\nPlease commit the changes by running:');
       console.log('git commit -a -m "Package integrity updates"');
     }
-    process.exit(1);
+    if (process.env.TRAVIS_BRANCH) {
+      process.exit(1);
+    }
   } else {
     console.log('Repo integrity verified!');
   }