1 | const meta = require('github-action-meta')
|
2 | const readJSON = require('./read-json')
|
3 |
|
4 | const CONFIG_KEY = '@primer/publish'
|
5 |
|
6 | const RELEASE_BRANCH_PATTERN = /^release-(.+)$/
|
7 | const RELEASE_CANDIDATE_PREID = 'rc'
|
8 | const RELEASE_CANDIDATE_TAG = 'next'
|
9 |
|
10 | const CANARY_VERSION = '0.0.0'
|
11 | const CANARY_PREID = ''
|
12 | const CANARY_TAG = 'canary'
|
13 |
|
14 |
|
15 | module.exports = function getContext(options) {
|
16 | const packageJson = readJSON('package.json') || {}
|
17 | const {name} = packageJson
|
18 |
|
19 | |
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 | const config = packageJson[CONFIG_KEY] || {}
|
27 | const {releaseBranch = 'master', releaseTag = 'latest'} = config
|
28 |
|
29 | let version
|
30 | let tag = releaseTag
|
31 |
|
32 | const {sha, branch} = meta.git
|
33 | if (branch === releaseBranch) {
|
34 | version = packageJson.version
|
35 | } else {
|
36 | let match
|
37 | const shortSha = sha.substr(0, 7)
|
38 | if ((match = branch.match(RELEASE_BRANCH_PATTERN))) {
|
39 |
|
40 |
|
41 | const v = match[1]
|
42 | const preid = RELEASE_CANDIDATE_PREID
|
43 | version = `${v}-${preid}.${shortSha}`
|
44 | tag = RELEASE_CANDIDATE_TAG
|
45 | } else {
|
46 | const v = CANARY_VERSION
|
47 | const preid = CANARY_PREID
|
48 | version = preid ? `${v}-${preid}.${shortSha}` : `${v}-${shortSha}`
|
49 | tag = CANARY_TAG
|
50 | }
|
51 | }
|
52 |
|
53 | return {name, version, tag, config, packageJson}
|
54 | }
|