소스 검색

Merge pull request #5568 from blink1073/fix-ensure-devutils

Better handling of ensure-buildutils
Ian Rose 6 년 전
부모
커밋
51f5ccb0dd
1개의 변경된 파일32개의 추가작업 그리고 1개의 파일을 삭제
  1. 32 1
      scripts/ensure-buildutils.js

+ 32 - 1
scripts/ensure-buildutils.js

@@ -4,10 +4,41 @@
 |----------------------------------------------------------------------------*/
 
 var fs = require('fs-extra');
+var glob = require('glob');
 var path = require('path');
 var childProcess = require('child_process');
 
-if (!fs.existsSync(path.join('buildutils', 'lib'))) {
+// Make sure that buildutils is built and current
+var current = true;
+if (fs.existsSync(path.join('buildutils', 'lib'))) {
+  var srcFiles = glob.sync(path.join('buildutils', 'src', '*'));
+  var libFiles = glob.sync(path.join('buildutils', 'lib', '*'));
+  srcFiles.forEach(function(srcPath) {
+    // Bail early if already not current
+    if (!current) {
+      return;
+    }
+    var name = path.basename(srcPath);
+    var ext = path.extname(name);
+    if (ext !== 'js') {
+      return;
+    }
+    var libPath = path.join('buildutils', 'lib', name.replace('.ts', '.js'));
+    if (libFiles.indexOf(libPath) === -1) {
+      current = false;
+      return;
+    }
+    var srcTime = fs.statSync(srcPath).mtime;
+    var libTime = fs.statSync(libPath).mtime;
+    if (libTime < srcTime) {
+      current = false;
+    }
+  });
+} else {
+  current = false;
+}
+
+if (!current) {
   // This must be "npm" because it is run during `pip install -e .` before
   // jlpm is installed.
   childProcess.execSync('npm run build', {