UNPKG

1.5 kBJavaScriptView Raw
1const chalk = require('chalk')
2const checkpoint = require('../checkpoint')
3const figures = require('figures')
4const formatCommitMessage = require('../format-commit-message')
5const runExec = require('../run-exec')
6const runLifecycleScript = require('../run-lifecycle-script')
7
8module.exports = function (newVersion, pkgPrivate, args) {
9 if (args.skip.tag) return Promise.resolve()
10 return runLifecycleScript(args, 'pretag')
11 .then(() => {
12 return execTag(newVersion, pkgPrivate, args)
13 })
14 .then(() => {
15 return runLifecycleScript(args, 'posttag')
16 })
17}
18
19function execTag (newVersion, pkgPrivate, args) {
20 let tagOption
21 if (args.sign) {
22 tagOption = '-s '
23 } else {
24 tagOption = '-a '
25 }
26 checkpoint(args, 'tagging release %s%s', [args.tagPrefix, newVersion])
27 return runExec(args, 'git tag ' + tagOption + args.tagPrefix + newVersion + ' -m "' + formatCommitMessage(args.message, newVersion) + '"')
28 .then(() => runExec('', 'git rev-parse --abbrev-ref HEAD'))
29 .then((currentBranch) => {
30 let message = 'git push --follow-tags origin ' + currentBranch.trim()
31 if (pkgPrivate !== true) {
32 message += ' && npm publish'
33 if (args.prerelease !== undefined) {
34 if (args.prerelease === '') {
35 message += ' --tag prerelease'
36 } else {
37 message += ' --tag ' + args.prerelease
38 }
39 }
40 }
41
42 checkpoint(args, 'Run `%s` to publish', [message], chalk.blue(figures.info))
43 })
44}