feat: add a gulp command for release

Signed-off-by: Rodolphe Pelloux-Prayer <rodolphe@damsy.net>
This commit is contained in:
Rodolphe Pelloux-Prayer 2017-05-04 22:18:31 +02:00
parent 52cca39823
commit aaa97495fd
No known key found for this signature in database
GPG key ID: D6C96C01D7A679A4
6 changed files with 103 additions and 4 deletions

1
.gitignore vendored
View file

@ -6,3 +6,4 @@ bingkey.txt
/.project
/keys.js
/dist
brouter-web.*.zip

View file

@ -1,6 +1,6 @@
{
"name": "brouter-web",
"version": "0.5.0",
"version": "0.6.3",
"main": "dist/**/*",
"ignore": [
"**/.*",

View file

@ -14,6 +14,12 @@ var remember = require('gulp-remember');
var inject = require('gulp-inject');
var gulpif = require('gulp-if');
var gutil = require('gulp-util');
var zip = require('gulp-zip');
var bump = require('gulp-bump');
var semver = require('semver');
var git = require('gulp-git');
var replace = require('gulp-replace');
var release = require('gulp-github-release');
var debug = false;
@ -143,3 +149,89 @@ gulp.task('debug', function() {
debug = true;
gulp.start('default');
});
var pkg = require('./package.json');
var tags = {patch: 'patch', minor: 'minor', major: 'major'};
var nextVersion;
var ghToken;
gulp.task('release:init', function() {
var tag = gutil.env.tag;
if (!tag) {
gutil.log(gutil.colors.red('--tag is required'));
process.exit(1);
}
if (['major', 'minor', 'patch'].indexOf(tag) < 0) {
gutil.log(gutil.colors.red('--tag must be major, minor or patch'));
process.exit(2);
}
ghToken = gutil.env.token;
if (!ghToken) {
gutil.log(gutil.colors.red('--token is required (github personnal access token)'));
process.exit(3);
}
if (ghToken.length != 40) {
gutil.log(gutil.colors.red('--token length must be 40'));
process.exit(4);
}
git.status({args: '--porcelain', quiet: true}, function(err, stdout) {
if (err) throw err;
if (stdout.length > 0) {
gutil.log(gutil.colors.red('Repository is not clean. Please commit or stash your pending modification'));
process.exit(5);
}
});
nextVersion = semver.inc(pkg.version, tag);
return;
});
gulp.task('bump', ['bump:json', 'bump:html']);
gulp.task('bump:json', ['release:init'], function() {
gutil.log(gutil.colors.green('Bump to '+nextVersion));
return(gulp.src(['./package.json', './bower.json'])
.pipe(bump({version: nextVersion}))
.pipe(gulp.dest('./')));
});
gulp.task('bump:html', ['release:init'], function() {
return(gulp.src('./index.html')
.pipe(replace(/<sup class="version">(.*)<\/sup>/, '<sup class="version">'+nextVersion+'</sup>'))
.pipe(gulp.dest('.')));
});
gulp.task('release:commit', ['bump'], function() {
gulp.src(['./index.html', './package.json', './bower.json'])
.pipe(git.commit('release: '+nextVersion));
});
gulp.task('release:tag', ['release:commit'], function() {
return(git.tag(nextVersion, '', function(err) {
if (err) throw err;
}));
});
gulp.task('release:push', ['release:tag'], function() {
git.push('origin', 'master', {args: '--tags'}, function(err) {
if (err) throw err;
});
});
gulp.task('release:zip', ['release:tag', 'default'], function() {
gutil.log(gutil.colors.green('Build brouter-web.'+nextVersion+'.zip'));
return(gulp.src(['dist/**', 'index.html', 'config.template.js', 'keys.template.js'], {'base': '.'})
.pipe(zip('brouter-web.'+nextVersion+'.zip'))
.pipe(gulp.dest('.')));
});
gulp.task('release:publish', ['release:zip'], function() {
gulp.src('./brouter-web.'+nextVersion+'.zip')
.pipe(release({
tag: nextVersion,
token: ghToken,
manifeste: pkg,
}))
});
gulp.task('release', ['release:init', 'bump', 'release:commit', 'release:tag',
'release:push', 'release:zip', 'release:publish']);

View file

@ -1,6 +1,6 @@
{
"name": "brouter-web",
"version": "0.5.0",
"version": "0.6.3",
"description": "Web client for BRouter",
"main": "js/index.js",
"scripts": {
@ -14,19 +14,25 @@
"devDependencies": {
"del": "^1.1.1",
"gulp": "^3.8.11",
"gulp-bump": "^2.7.0",
"gulp-cached": "^1.0.4",
"gulp-concat": "^2.5.2",
"gulp-concat-css": "^2.1.2",
"gulp-confirm": "^1.0.6",
"gulp-debug": "^2.0.1",
"gulp-git": "^2.2.0",
"gulp-github-release": "^1.2.1",
"gulp-if": "^2.0.0",
"gulp-inject": "^1.2.0",
"gulp-minify-css": "^1.0.0",
"gulp-remember": "^0.3.0",
"gulp-rename": "^1.2.0",
"gulp-replace": "^0.5.4",
"gulp-sourcemaps": "^1.5.1",
"gulp-tap": "^0.1.3",
"gulp-uglify": "^1.1.0",
"gulp-if": "^2.0.0",
"gulp-util": "^3.0.7",
"gulp-zip": "^4.0.0",
"main-bower-files": "^2.6.2"
}
}