const async = require('neo-async'), git = require('./util/git'), semver = require('semver'); module.exports = function(grunt) { grunt.registerTask( 'version', 'Updates the current release version', function() { const done = this.async(), pkg = grunt.config('pkg'), version = grunt.option('ver'); if (!semver.valid(version)) { throw new Error( 'Must provide a version number (Ex: --ver=1.0.0):\n\t' + version + '\n\n' ); } pkg.version = version; grunt.config('pkg', pkg); grunt.log.writeln('Updating to version ' + version); async.each( [ [ 'lib/handlebars/base.js', /const VERSION = ['"](.*)['"];/, "const VERSION = '" + version + "';" ], [ 'components/bower.json', /"version":.*/, '"version": "' + version + '",' ], [ 'components/package.json', /"version":.*/, '"version": "' + version + '",' ], [ 'components/handlebars.js.nuspec', /.*<\/version>/, '' + version + '' ] ], function(args, callback) { replace.apply(undefined, args); grunt.log.writeln(' - ' + args[0]); git.add(args[0], callback); }, function() { grunt.task.run(['default']); done(); } ); } ); function replace(path, regex, value) { let content = grunt.file.read(path); content = content.replace(regex, value); grunt.file.write(path, content); } };