Move binary download code to gulp

This commit is contained in:
Jeffrey Morgan 2015-06-04 18:10:06 -07:00
parent 7b507067e9
commit ce2452bffd
3 changed files with 84 additions and 83 deletions

View File

@ -14,6 +14,9 @@ var plumber = require('gulp-plumber');
var runSequence = require('run-sequence');
var shell = require('gulp-shell');
var sourcemaps = require('gulp-sourcemaps');
var execFile = require('child_process').execFile;
var request = require('request');
var path = require('path');
var dependencies = Object.keys(packagejson.dependencies);
var argv = require('minimist')(process.argv.slice(2));
@ -175,16 +178,86 @@ gulp.task('settings', function () {
string_src('settings.json', JSON.stringify(settings)).pipe(gulp.dest('dist/osx/' + options.appFilename.replace(' ', '\ ').replace('(','\(').replace(')','\)') + '/Contents/Resources/app'));
});
gulp.task('download-deps', function () {
if(process.platform === 'win32') {
return gulp.src('').pipe(
shell(['powershell.exe -ExecutionPolicy unrestricted -File util\\deps.ps1'])
);
} else {
return gulp.src('').pipe(
shell(['./util/deps'])
);
var version = function (str) {
var match = str.match(/(\d+\.\d+\.\d+)/);
if (match) {
return match[1];
} else {
return null;
}
};
gulp.task('download-docker', function (cb) {
if (process.platform === 'win32' && fs.existsSync(path.join('resources', 'docker.exe'))) {
cb();
return;
}
execFile(path.join('resources', 'docker'), ['-v'], function (err, stdout, stderr) {
var currentVersion = version(stdout);
if (currentVersion && currentVersion === packagejson['docker-version']) {
cb();
return;
}
gutil.log(gutil.colors.green('Downloading Docker'));
if(process.platform === 'win32') {
request('https://master.dockerproject.com/windows/amd64/docker-1.7.0-dev.exe').pipe(fs.createWriteStream('./resources/docker.exe')).on('end', cb);
} else {
request('https://get.docker.com/builds/Darwin/x86_64/docker-' + packagejson['docker-version'] + '.tgz').pipe(fs.createWriteStream('./resources/docker')).on('end', cb);
}
});
});
gulp.task('download-docker-machine', function (cb) {
execFile(path.join('resources', 'docker-machine'), ['-v'], function (err, stdout, stderr) {
var currentVersion = version(stdout);
if (currentVersion && currentVersion === version(packagejson['docker-machine-version'])) {
cb();
return;
}
gutil.log(gutil.colors.green('Downloading Docker Machine'));
if(process.platform === 'win32') {
request('https://github.com/docker/machine/releases/download/v' + packagejson['docker-machine-version'] + '/docker-machine_windows-amd64.exe')
.pipe(fs.createWriteStream('./resources/docker-machine.exe')).on('end', function () {cb()});
} else {
request('https://github.com/docker/machine/releases/download/v' + packagejson['docker-machine-version'] + 'docker-machine_darwin-amd64')
.pipe(fs.createWriteStream('./resources/docker-machine')).on('end', function () {cb()});
}
});
});
gulp.task('download-docker-compose', function (cb) {
execFile(path.join('resources', 'docker-compose'), ['--version'], function (err, stdout, stderr) {
var currentVersion = version(stdout);
if (currentVersion && currentVersion === packagejson['docker-compose-version']) {
cb();
return;
}
if(process.platform === 'win32') {
// Todo: install windows version of compose
cb();
} else {
gutil.log(gutil.colors.green('Downloading Docker Compose'));
request('https://github.com/docker/compose/releases/download/' + packagejson['docker-compose-version'] + '/docker-compose-Darwin-x86_64')
.pipe(fs.createWriteStream('./resources/docker-compose')).on('end', cb);
}
});
});
gulp.task('download-boot2docker-iso', function (cb) {
var b2dFile = path.join('resources', 'boot2docker-' + packagejson['docker-version'] + '.iso');
if (!fs.existsSync(b2dFile)) {
gutil.log(gutil.colors.green('Downloading Boot2Docker iso'));
request('https://github.com/boot2docker/boot2docker/releases/download/v' + packagejson['docker-version'] + '/boot2docker.iso')
.pipe(fs.createWriteStream(b2dFile)).on('end', cb);
} else {
cb();
}
});
gulp.task('reset', function () {
@ -200,10 +273,10 @@ gulp.task('reset', function () {
});
gulp.task('release', function () {
runSequence('download-deps', 'download', 'dist', ['copy', 'images', 'js', 'styles', 'settings'], 'sign', 'zip');
runSequence('download-docker', 'download-docker-machine', 'download-docker-compose', 'download-boot2docker-iso', 'download', 'dist', ['copy', 'images', 'js', 'styles', 'settings'], 'sign', 'zip');
});
gulp.task('default', ['download-deps', 'download', 'copy', 'js', 'images', 'styles'], function () {
gulp.task('default', ['download-docker', 'download-docker-machine', 'download-docker-compose', 'download-boot2docker-iso', 'download', 'copy', 'js', 'images', 'styles'], function () {
gulp.watch('src/**/*.js', ['js']);
gulp.watch('index.html', ['copy']);
gulp.watch('styles/**/*.less', ['styles']);

View File

@ -1,46 +0,0 @@
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BASE=$DIR/..
DOCKER_VERSION=$(node -pe "JSON.parse(process.argv[1])['docker-version']" "$(cat $BASE/package.json)")
DOCKER_MACHINE_VERSION=$(node -pe "JSON.parse(process.argv[1])['docker-machine-version']" "$(cat $BASE/package.json)")
DOCKER_COMPOSE_VERSION=$(node -pe "JSON.parse(process.argv[1])['docker-compose-version']" "$(cat $BASE/package.json)")
CURRENT_DOCKER_VERSION=$($BASE/resources/docker -v | cut -d ',' -f1 | awk '{print $3}' | cut -d '-' -f1)
CURRENT_DOCKER_MACHINE_VERSION=$($BASE/resources/docker-machine -v | cut -d ',' -f1 | awk '{print $3}' | cut -d '-' -f1)
CURRENT_DOCKER_COMPOSE_VERSION=$($BASE/resources/docker-compose --version | cut -d ',' -f1 | awk '{print $2}' | cut -d '-' -f1)
BOOT2DOCKER_FILE=boot2docker-$DOCKER_VERSION.iso
pushd $BASE/resources > /dev/null
if [ "$DOCKER_VERSION" != "$CURRENT_DOCKER_VERSION" ]; then
echo "-----> Downloading Docker CLI..."
rm -rf docker
rm -rf docker-*
curl -L -o docker-$DOCKER_VERSION.tgz https://get.docker.com/builds/Darwin/x86_64/docker-$DOCKER_VERSION.tgz
tar xvzf docker-$DOCKER_VERSION.tgz --strip=3
rm docker-$DOCKER_VERSION.tgz
chmod +x docker
fi
if [ "$DOCKER_MACHINE_VERSION" != "$CURRENT_DOCKER_MACHINE_VERSION" ]; then
echo "-----> Downloading Docker Machine CLI..."
rm -rf docker-machine
rm -rf docker-machine-*
curl -L -o docker-machine https://github.com/docker/machine/releases/download/v$DOCKER_MACHINE_VERSION/docker-machine_darwin-amd64
chmod +x docker-machine
fi
if [ "$DOCKER_COMPOSE_VERSION" != "$CURRENT_DOCKER_COMPOSE_VERSION" ]; then
echo "-----> Downloading Docker Compose CLI..."
rm -rf docker-compose
curl -L -o docker-compose https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-Darwin-x86_64
chmod +x docker-compose
fi
if [ ! -f $BOOT2DOCKER_FILE ]; then
echo "-----> Downloading Boot2Docker iso..."
rm -rf boot2docker-*
curl -L -o $BOOT2DOCKER_FILE https://github.com/boot2docker/boot2docker/releases/download/v$DOCKER_VERSION/boot2docker.iso
fi
popd > /dev/null

View File

@ -1,26 +0,0 @@
$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
$BasePath = $dir + '\..\'
$packageJson = get-content ($BasePath + 'package.json')
[System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions") > $null
$serializer = New-Object System.Web.Script.Serialization.JavaScriptSerializer
$packageJsonContent = $serializer.DeserializeObject($packageJson)
$webclient = New-Object System.Net.WebClient
$DOCKER_MACHINE_CLI_VERSION = $packageJsonContent['docker-machine-version']
$DOCKER_CLI_VERSION = $packageJsonContent['docker-version']
if(-Not (test-path ($BasePath + '\resources\docker'))) {
echo "-----> Downloading Docker CLI..."
$source = "https://master.dockerproject.com/windows/amd64/docker.exe"
$destination = $BasePath + "\resources\docker"
$webclient.DownloadFile($source, $destination)
}
if(-Not (test-path ($BasePath + '\resources\docker-machine'))) {
echo "-----> Downloading Docker Machine CLI..."
$source = "https://github.com/docker/machine/releases/download/v" + $DOCKER_MACHINE_VERSION+ "/docker-machine_windows-amd64.exe"
$destination = $BasePath + "\resources\docker-machine"
$webclient.DownloadFile($source, $destination)
}