diff --git a/README.md b/README.md index 915d664..a40f00e 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,11 @@ gulp.task('deploy', function() { Only trigger deployment on the following branch(es). Defaults to `master`. +- `version` + + Tag version from package.json. Defaults to `false`. + + - `verbose` Verbose mode. Will show output from all git commands run. Defaults to `false`. diff --git a/index.js b/index.js index f38ce43..ef980db 100644 --- a/index.js +++ b/index.js @@ -15,6 +15,7 @@ module.exports = function(options) { repository: '', remoteBranch: 'master', branches: ['master'], + version: false, verbose: false, debug: false }, options); @@ -201,6 +202,56 @@ module.exports = function(options) { return callback(null); }); }, + function gitTag(callback) { + if (!options.version) { + return callback(null); + } + const packageJson = files.reduce(function(path, file) { + if (file.path.indexOf('package.json') !== -1) { + path = file.path + } + return path + }, ''); + if (packageJson === '') { + return callback('package.json is required if option version is true'); + } + var packageContent = fs.readFileSync(packageJson, 'utf8'); + var json = JSON.parse(packageContent.toString()); + var version = json.version; + gutil.log(gutil.colors.yellow('Tag version ' + version)); + var cmdTag = spawn('git', ['tag', '-a', 'v' + version, '-m', 'Version ' + version], {cwd: repoPath}); + cmdTag.stderr.on('data', function(data) { + if (options.verbose || options.debug) gutil.log(gutil.colors.magenta('git tag: ') + data.toString().trim()); + }); + cmdTag.stdout.on('data', function(data) { + if (options.verbose || options.debug) gutil.log(gutil.colors.magenta('git tag: ') + data.toString().trim()); + }); + cmdTag.on('close', function(code) { + if (code !== 0) { + return callback('git tag exited with code ' + code); + } + return callback(null); + }); + }, + function gitPushTag(callback) { + if (!options.version) { + return callback(null); + } + gutil.log(gutil.colors.yellow('Pushing version to remote deployment repository')); + var cmdPush = spawn('git', ['push', 'origin', '--tags'], {cwd: repoPath}); + cmdPush.stderr.on('data', function(data) { + if (options.verbose || options.debug) gutil.log(gutil.colors.magenta('git push verion: ') + data.toString().trim()); + }); + cmdPush.stdout.on('data', function(data) { + if (options.verbose || options.debug) gutil.log(gutil.colors.magenta('git push verion: ') + data.toString().trim()); + }); + cmdPush.on('close', function(code) { + if (code !== 0) { + return callback('git push verion exited with code ' + code); + } + return callback(null); + }); + }, function gitPush(callback) { gutil.log(gutil.colors.yellow('Pushing to remote deployment repository')); var cmdPush = spawn('git', ['push', 'origin', options.remoteBranch], {cwd: repoPath});