1 | const chalk = require('chalk')
|
2 | const checkpoint = require('../checkpoint')
|
3 | const figures = require('figures')
|
4 | const formatCommitMessage = require('../format-commit-message')
|
5 | const runExec = require('../run-exec')
|
6 | const runLifecycleScript = require('../run-lifecycle-script')
|
7 |
|
8 | module.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 |
|
19 | function 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 | }
|