/*eslint no-console: 0 */ var gulp = require('gulp'); var bump = require('gulp-bump'); var git = require('gulp-git'); var publishRelease = require('publish-release'); var gzipSize = require('gzip-size'); var runSequence = require('gulp4-run-sequence'); var fs = require('fs'); var settings = require('./settings.json'); var shared = require('./shared.js'); gulp.task('git-release', gulp.series(['compress'], function (cb) { var pkg = require(settings.baseDir + 'package.json'); var v = 'v' + pkg.version; var message = ':package: Release ' + v; updateReadmeFileSizes(); gulp.src(['./package.json', './bower.json', './README.md', './bin/', './dist']) .pipe(git.add({ args: '--all --force' })) .pipe(git.commit(message)); git.push('origin', 'master', function () { git.tag(v, message, function () { git.push('origin', 'master', { args: '--tags' }, cb); }); }); })); // Bump (increase) the version number gulp.task('bump-patch', function () { return gulp.src(['./package.json', './bower.json']) .pipe(bump({ type: 'patch' })) .pipe(gulp.dest('./')); }); gulp.task('bump-minor', function () { return gulp.src(['./package.json', './bower.json']) .pipe(bump({ type: 'minor' })) .pipe(gulp.dest('./')); }); gulp.task('bump-major', function () { return gulp.src(['./package.json', './bower.json']) .pipe(bump({ type: 'major' })) .pipe(gulp.dest('./')); }); gulp.task('npm', function (done) { require('child_process').spawn('npm', ['publish'], { stdio: 'inherit' }) .on('close', done); }); gulp.task('github-release', function (done) { var pkg = require(settings.baseDir + './package.json'); var v = 'v' + pkg.version; var name = "JsBarcode " + v; publishRelease({ token: process.env.GITHUB_TOKEN, owner: "lindell", repo: "JsBarcode", tag: v, name: name, assets: [__dirname + "/" + settings.baseDir + "/dist/JsBarcode.all.min.js", __dirname + "/" + settings.baseDir + "/dist/JsBarcode.all.js"] }, done); }); gulp.task('release', gulp.series(function (callback) { runSequence( 'git-release', 'github-release', 'npm', callback ); })); gulp.task('patch', function () { runSequence( 'bump-patch', 'release', releaseDone ); }); gulp.task('minor', function () { runSequence( 'bump-minor', 'release', releaseDone ); }); gulp.task('major', function () { runSequence( 'bump-major', 'release', releaseDone ); }); function releaseDone(error) { if (error) { console.log(error.message); } else { console.log('Successful!'); } } function updateReadmeFileSizes() { var files = require('./barcode-building.json'); var readme = fs.readFileSync('README.md', "utf-8"); // Update .all files var allData = fs.readFileSync('dist/JsBarcode.all.min.js'); var allFilesize = gzipSize.sync(allData); var allRegexp = new RegExp('\\|[^\\|]*\\|([ \\t\\*]*\\[JsBarcode\\.all\\.min\\.js\\])'); readme = readme.replace(allRegexp, "| *" + formatSize(allFilesize) + "* |$1"); // Update all barcodes files for (var i in files) { var filename = shared.minifiedFilename(files[i].name); var fileData = fs.readFileSync('dist/barcodes/' + filename); var fileFilesize = gzipSize.sync(fileData); var fileRegexp = new RegExp('\\|[^\\|]*\\|([ \\t]*\\[' + RegExp.escape(filename) + '\\])'); readme = readme.replace(fileRegexp, "| " + formatSize(fileFilesize) + " |$1"); } fs.writeFileSync('README.md', readme, 'utf8'); } // Util functions RegExp.escape = function (s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); }; function formatSize(bytes) { var kilobytes = Math.round(bytes / 1024 * 10) / 10; return kilobytes + " kB"; }