|
3 | 3 |
|
4 | 4 | var spawn = require('child_process').spawnSync;
|
5 | 5 | var ncp = require('ncp');
|
6 |
| -var version = require('./package.json').version |
| 6 | +var Semver = require('semver'); |
| 7 | +var version = require('./package.json').version; |
| 8 | +var fs = require('fs'); |
| 9 | +var packageVer = new Semver(version); |
7 | 10 |
|
8 | 11 | var mavenVersion = 'v' + version.split('.')[0];
|
9 | 12 | var url =
|
10 | 13 | 'https://repo1.maven.org/maven2/com/google/javascript/closure-compiler/'
|
11 | 14 | + mavenVersion + '/closure-compiler-' + mavenVersion + '.jar';
|
12 | 15 |
|
13 |
| -var compilerBuild = spawn('wget', ['-O', './compiler.jar', url], { |
14 |
| - stdio: 'inherit' |
15 |
| -}); |
| 16 | +var shouldDownloadCompiler = true; |
| 17 | +var compilerJarStats = null; |
| 18 | +try { |
| 19 | + compilerJarStats = fs.statSync('./compiler.jar'); |
| 20 | +} catch (e) {} |
| 21 | +if (compilerJarStats && compilerJarStats.isFile()) { |
| 22 | + var versionOutput = spawn('java', ['-jar', 'compiler.jar', '--version']); |
| 23 | + for (var line of versionOutput.output) { |
| 24 | + if (line) { |
| 25 | + var lineString = line.toString(); |
| 26 | + var versionParts = /^Version: v(\d+)$/m.exec(lineString); |
| 27 | + if (versionParts) { |
| 28 | + shouldDownloadCompiler = parseInt(versionParts[1], 10) < packageVer.major; |
| 29 | + } |
| 30 | + } |
| 31 | + } |
| 32 | +} |
| 33 | + |
| 34 | +if (shouldDownloadCompiler) { |
| 35 | + var compilerBuild = spawn('wget', ['-O', './compiler.jar', url], { |
| 36 | + stdio: 'inherit' |
| 37 | + }); |
16 | 38 |
|
17 |
| -if (compilerBuild.status !== 0) { |
18 |
| - throw new Error('Downloading compiler jar from Maven Central failed'); |
| 39 | + if (compilerBuild.status !== 0) { |
| 40 | + throw new Error('Downloading compiler jar from Maven Central failed'); |
| 41 | + } |
19 | 42 | }
|
20 | 43 |
|
21 | 44 | ncp('./compiler/contrib', './contrib', function(err) {
|
|
0 commit comments