worked out bower release process
This commit is contained in:
@ -4,10 +4,11 @@
|
|||||||
module.exports = function (grunt) {
|
module.exports = function (grunt) {
|
||||||
// load plugins
|
// load plugins
|
||||||
require('load-grunt-config')(grunt, {
|
require('load-grunt-config')(grunt, {
|
||||||
configPath: require('path').join(__dirname, 'grunt/config'),
|
configPath: __dirname + '/grunt/config',
|
||||||
init: true,
|
init: true,
|
||||||
config: {
|
config: {
|
||||||
distDir: 'dist',
|
distDir: __dirname + '/dist',
|
||||||
|
bowerSubmodule: __dirname + '/src/bower-elasticsearch-js',
|
||||||
meta: {
|
meta: {
|
||||||
banner: '/*! <%= package.name %> - v<%= package.version %> - ' +
|
banner: '/*! <%= package.name %> - v<%= package.version %> - ' +
|
||||||
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
||||||
|
|||||||
@ -5,34 +5,46 @@ module.exports = function (grunt) {
|
|||||||
'saucelabs-mocha:all'
|
'saucelabs-mocha:all'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
grunt.registerTask('browser_clients:build', [
|
grunt.registerTask('browser_clients:build', function () {
|
||||||
'clean:dist',
|
// prevent this from running more than once accidentally
|
||||||
'browserify:browser_client',
|
grunt.task.renameTask('browser_clients:build', 'browser_clients:rebuild');
|
||||||
'browserify:angular_client',
|
grunt.task.registerTask('browser_clients:build', []);
|
||||||
'browserify:jquery_client',
|
|
||||||
'uglify:dist',
|
grunt.task.run([
|
||||||
'concat:dist_banners'
|
'clean:dist',
|
||||||
]);
|
'browserify:browser_client',
|
||||||
|
'browserify:angular_client',
|
||||||
|
'browserify:jquery_client',
|
||||||
|
'uglify:dist',
|
||||||
|
'concat:dist_banners'
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
grunt.registerTask('browser_clients:distribute', [
|
grunt.registerTask('browser_clients:distribute', [
|
||||||
'browser_clients:build',
|
'_upload_archive:master'
|
||||||
'copy:dist_to_named_dir',
|
|
||||||
'compress:master_zip',
|
|
||||||
'compress:master_tarball',
|
|
||||||
's3:upload_archives'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
grunt.registerTask('browser_clients:release', [
|
grunt.registerTask('browser_clients:release', [
|
||||||
'prompt:confirm_release',
|
'prompt:confirm_release',
|
||||||
'__check_for_confirmation',
|
'_check_for_confirmation',
|
||||||
|
'_upload_archive:release',
|
||||||
'browser_clients:build',
|
'browser_clients:build',
|
||||||
'copy:dist_to_named_dir',
|
'run:init_submodules',
|
||||||
'compress:release_zip',
|
'copy:dist_to_bower',
|
||||||
'compress:release_tarball',
|
'run:release_bower_subm_tag'
|
||||||
's3:upload_archives'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
grunt.registerTask('__check_for_confirmation', function () {
|
grunt.registerTask('_upload_archive', function (type) {
|
||||||
|
grunt.run([
|
||||||
|
'browser_clients:build',
|
||||||
|
'copy:dist_to_named_dir',
|
||||||
|
'compress:' + type + '_zip',
|
||||||
|
'compress:' + type + '_tarball',
|
||||||
|
's3:upload_archives'
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
grunt.registerTask('_check_for_confirmation', function () {
|
||||||
if (grunt.config.get('confirm.release')) {
|
if (grunt.config.get('confirm.release')) {
|
||||||
grunt.log.verbose.writeln('release confirmed');
|
grunt.log.verbose.writeln('release confirmed');
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -4,5 +4,11 @@ module.exports = {
|
|||||||
src: '*.js',
|
src: '*.js',
|
||||||
dest: '<%= distDir %>/elasticsearch-js/',
|
dest: '<%= distDir %>/elasticsearch-js/',
|
||||||
expand: true
|
expand: true
|
||||||
|
},
|
||||||
|
dist_to_bower: {
|
||||||
|
cwd: '<%= distDir %>',
|
||||||
|
src: '*.js',
|
||||||
|
dest: '<%= bowerSubmodule %>',
|
||||||
|
expand: true
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -52,5 +52,14 @@ module.exports = {
|
|||||||
wait: false,
|
wait: false,
|
||||||
quiet: true
|
quiet: true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
init_submodules: {
|
||||||
|
exec: 'git submodule update --init',
|
||||||
|
options: {
|
||||||
|
quiet: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
release_bower_subm_tag: {
|
||||||
|
exec: 'node ./scripts/release/bower'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
37
scripts/_spawn.js
Normal file
37
scripts/_spawn.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
module.exports = spawn;
|
||||||
|
|
||||||
|
var estream = require('event-stream');
|
||||||
|
var chalk = require('chalk');
|
||||||
|
var cp = require('child_process');
|
||||||
|
|
||||||
|
function spawn(cmd, args, opts, cb) {
|
||||||
|
opts = opts || {};
|
||||||
|
|
||||||
|
console.log(chalk.white.bold('$ ' + cmd + ' ' + args.join(' ')));
|
||||||
|
|
||||||
|
var proc = cp.spawn(cmd, args, {
|
||||||
|
stdio: 'pipe',
|
||||||
|
cwd: opts.cwd
|
||||||
|
});
|
||||||
|
var out = estream.split();
|
||||||
|
|
||||||
|
if (opts.verbose) {
|
||||||
|
proc.stdout.pipe(out);
|
||||||
|
} else {
|
||||||
|
proc.stdout.resume();
|
||||||
|
}
|
||||||
|
|
||||||
|
proc.stderr.pipe(out);
|
||||||
|
|
||||||
|
out
|
||||||
|
.pipe(estream.mapSync(function indent(line) {
|
||||||
|
return ' ' + line + '\n';
|
||||||
|
}))
|
||||||
|
.pipe(process.stdout);
|
||||||
|
|
||||||
|
if (typeof cb === 'function') {
|
||||||
|
proc.on('exit', cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
return proc;
|
||||||
|
}
|
||||||
@ -1,8 +1,6 @@
|
|||||||
var cp = require('child_process');
|
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var estream = require('event-stream');
|
|
||||||
var chalk = require('chalk');
|
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
|
var spawn = require('../_spawn');
|
||||||
var argv = require('optimist')
|
var argv = require('optimist')
|
||||||
.options({
|
.options({
|
||||||
force: {
|
force: {
|
||||||
@ -41,54 +39,32 @@ if (!argv.force && process.env.FORCE || process.env.FORCE_GEN) {
|
|||||||
argv.force = argv.f = process.env.FORCE || process.env.FORCE_GEN;
|
argv.force = argv.f = process.env.FORCE || process.env.FORCE_GEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
function spawn(cmd, args) {
|
|
||||||
console.log(chalk.white.bold('$ ' + cmd + ' ' + args.join(' ')));
|
|
||||||
|
|
||||||
var proc = cp.spawn(cmd, args, { stdio: 'pipe'});
|
|
||||||
var out = estream.split();
|
|
||||||
|
|
||||||
if (argv.verbose) {
|
|
||||||
proc.stdout.pipe(out);
|
|
||||||
} else {
|
|
||||||
proc.stdout.resume();
|
|
||||||
}
|
|
||||||
|
|
||||||
proc.stderr.pipe(out);
|
|
||||||
|
|
||||||
out
|
|
||||||
.pipe(estream.mapSync(function indent(line) {
|
|
||||||
return ' ' + line + '\n';
|
|
||||||
}))
|
|
||||||
.pipe(process.stdout);
|
|
||||||
|
|
||||||
return proc;
|
|
||||||
}
|
|
||||||
|
|
||||||
function initSubmodule(done) {
|
function initSubmodule(done) {
|
||||||
spawn('git', ['submodule', 'update', '--init'])
|
spawn('git', ['submodule', 'update', '--init'], argv, function (status) {
|
||||||
.on('exit', function (status) {
|
done(status ? new Error('Unable to init submodules.') : void 0);
|
||||||
done(status ? new Error('Unable to init submodules.') : void 0);
|
});
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetch(done) {
|
function fetch(done) {
|
||||||
spawn('git', ['submodule', 'foreach', 'git fetch origin'])
|
spawn('git', ['submodule', 'foreach', 'git fetch origin'], argv, function (status) {
|
||||||
.on('exit', function (status) {
|
done(status ? new Error('Unable fetch lastest changes.') : void 0);
|
||||||
done(status ? new Error('Unable fetch lastest changes.') : void 0);
|
});
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateBranch(branch, done) {
|
function generateBranch(branch, done) {
|
||||||
async.series([
|
async.series([
|
||||||
function (done) {
|
function (done) {
|
||||||
spawn('git', ['submodule', 'foreach', [
|
var cmd = [
|
||||||
'git reset --hard', 'git clean -fdx', 'git checkout origin/' + branch
|
'git reset --hard',
|
||||||
].join(' && ')])
|
'git clean -fdx',
|
||||||
.on('exit', function (status) {
|
'git checkout origin/' + branch
|
||||||
done(status ? new Error('Unable to checkout ' + branch) : void 0);
|
].join(' && ');
|
||||||
});
|
|
||||||
|
spawn('git', ['submodule', 'foreach', cmd], function (status) {
|
||||||
|
done(status ? new Error('Unable to checkout ' + branch) : void 0);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
function (done) {
|
function (done) {
|
||||||
var tasks = [];
|
var tasks = [];
|
||||||
|
|||||||
40
scripts/release/bower.js
Normal file
40
scripts/release/bower.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
var fs = require('fs');
|
||||||
|
var spawn = require('../_spawn');
|
||||||
|
var async = require('async');
|
||||||
|
var _ = require('lodash');
|
||||||
|
|
||||||
|
var root = require('path').join(__dirname, '../..');
|
||||||
|
var bowerDir = root + '/src/bower-elasticsearch-js';
|
||||||
|
|
||||||
|
// get both the bower and node package files
|
||||||
|
var bowerJson = require(bowerDir + '/bower.json');
|
||||||
|
var esjsJson = require(root + '/package.json');
|
||||||
|
|
||||||
|
// update the version to match the node version
|
||||||
|
bowerJson.version = esjsJson.version;
|
||||||
|
|
||||||
|
// write the new bower.json file
|
||||||
|
fs.writeFileSync(bowerDir + '/bower.json', JSON.stringify(bowerJson, null, ' '));
|
||||||
|
|
||||||
|
function make(cmd, args) {
|
||||||
|
return _.bind(spawn, null, cmd, args, {
|
||||||
|
verbose: true,
|
||||||
|
cwd: bowerDir
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async.series([
|
||||||
|
make('git', ['add', '-A']),
|
||||||
|
make('git', ['commit', '-m', 'version ' + bowerJson.version]),
|
||||||
|
make('git', ['tag', '-a', 'v' + bowerJson.version, '-m', 'version ' + bowerJson.version]),
|
||||||
|
make('git', ['push', 'origin', 'master']),
|
||||||
|
make('git', ['push', '--tags', 'origin'])
|
||||||
|
], function (err) {
|
||||||
|
if (err) {
|
||||||
|
if (_.isNumber(err)) {
|
||||||
|
console.log('Non-zero exit code: %d', err);
|
||||||
|
} else {
|
||||||
|
console.log('Error: ', err.message ? err.message : err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
Submodule src/bower-elasticsearch-js updated: bb8d403ad2...55b727d727
Reference in New Issue
Block a user