diff --git a/.gitignore b/.gitignore index 36a1b17492..7de51eecbc 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,7 @@ integration # Resources resources/docker* -resources/boot2docker-* +resources/boot2docker* # Cache cache diff --git a/Gruntfile.js b/Gruntfile.js index 30bc6d3a25..8027ba9647 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,4 +1,5 @@ var path = require('path'); +var fs = require('fs'); var execFile = require('child_process').execFile; var packagejson = require('./package.json'); var electron = require('electron-prebuilt'); @@ -27,6 +28,19 @@ module.exports = function (grunt) { return match ? match[1] : null; }; + grunt.registerTask('download-boot2docker-iso', 'Downloads provided boot2docker version', function () { + var version = grunt.config('version'); + try { + var data = fs.readFileSync(path); + var match = data.match(/Boot2Docker-v(\d+\.\d+\.\d+)/); + if (match && match[1] !== version) { + grunt.task.run('curl:boot2docker-iso'); + } + } catch (err) { + grunt.task.run('curl:boot2docker-iso'); + } + }); + grunt.registerMultiTask('download-binary', 'Downloads binary unless version up to date', function () { var target = grunt.task.current.target; var done = this.async(); @@ -213,7 +227,7 @@ module.exports = function (grunt) { }, 'boot2docker-iso': { src: BOOT2DOCKER_ISO_URL, - dest: path.join('resources', 'boot2docker-' + packagejson['docker-version']) + dest: path.join('resources', 'boot2docker.iso') } }, @@ -282,6 +296,7 @@ module.exports = function (grunt) { clean: { release: ['build/', 'dist/', 'installer/'], + isos: ['resources/boot2docker*'] }, // livereload @@ -307,12 +322,12 @@ module.exports = function (grunt) { } } }); - grunt.registerTask('default', ['download-binary', 'newer:babel', 'less', 'newer:copy:dev', 'shell:electron', 'watchChokidar']); + grunt.registerTask('default', ['download-binary', 'if-missing:curl:boot2docker-iso', 'newer:babel', 'less', 'newer:copy:dev', 'shell:electron', 'watchChokidar']); if (process.platform === 'win32') { - grunt.registerTask('release', ['clean', 'download-binary', 'babel', 'less', 'copy:dev', 'electron:windows', 'copy:windows', 'rcedit:exes', 'create-windows-installer', 'rename:installer']); + grunt.registerTask('release', ['clean', 'download-binary', 'if-missing:curl:boot2docker-iso', 'babel', 'less', 'copy:dev', 'electron:windows', 'copy:windows', 'rcedit:exes', 'create-windows-installer', 'rename:installer']); } else { - grunt.registerTask('release', ['clean', 'download-binary', 'babel', 'less', 'copy:dev', 'electron:osx', 'copy:osx', 'shell:sign', 'shell:zip']); + grunt.registerTask('release', ['clean', 'download-binary', 'if-missing:curl:boot2docker-iso', 'babel', 'less', 'copy:dev', 'electron:osx', 'copy:osx', 'shell:sign', 'shell:zip']); } process.on('SIGINT', function () { diff --git a/package.json b/package.json index 3040ad9960..0d41db8c2b 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,9 @@ "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } ], - "docker-version": "1.6.2", - "docker-machine-version": "0.3.0-rc3", - "docker-compose-version": "1.2.0", + "docker-version": "1.7.0", + "docker-machine-version": "0.3.0", + "docker-compose-version": "1.3.0", "electron-version": "0.27.2", "virtualbox-version": "4.3.28", "virtualbox-filename": "VirtualBox-4.3.28.pkg", @@ -78,6 +78,7 @@ "grunt-download-electron": "^2.1.1", "grunt-electron": "^1.0.0", "grunt-electron-installer": "^0.33.0", + "grunt-if-missing": "^1.0.0", "grunt-newer": "^1.1.1", "grunt-rcedit": "^0.3.1", "grunt-rename": "^0.1.4", diff --git a/src/utils/DockerMachineUtil.js b/src/utils/DockerMachineUtil.js index 8006e49bf7..fbbe70956c 100644 --- a/src/utils/DockerMachineUtil.js +++ b/src/utils/DockerMachineUtil.js @@ -56,11 +56,10 @@ var DockerMachine = { }); }, create: function () { - var dockerversion = util.packagejson()['docker-version']; if (util.isWindows()) { return util.exec([this.command(), '-D', 'create', '-d', 'virtualbox', '--virtualbox-memory', '2048', NAME]); } else { - return util.exec([this.command(), '-D', 'create', '-d', 'virtualbox' ,'--virtualbox-boot2docker-url', path.join(process.cwd(), 'resources', 'boot2docker-' + dockerversion + '.iso'), '--virtualbox-memory', '2048', NAME]); + return util.exec([this.command(), '-D', 'create', '-d', 'virtualbox' ,'--virtualbox-boot2docker-url', path.join(process.cwd(), 'resources', 'boot2docker.iso'), '--virtualbox-memory', '2048', NAME]); } }, start: function () {