UNPKG

1.59 kBJavaScriptView Raw
1const meta = require('github-action-meta')
2const readJSON = require('./read-json')
3
4const CONFIG_KEY = '@primer/publish'
5
6const RELEASE_BRANCH_PATTERN = /^release-(.+)$/
7const RELEASE_CANDIDATE_PREID = 'rc'
8const RELEASE_CANDIDATE_TAG = 'next'
9
10const CANARY_VERSION = '0.0.0'
11const CANARY_PREID = ''
12const CANARY_TAG = 'canary'
13
14// eslint-disable-next-line no-unused-vars
15module.exports = function getContext(options) {
16 const packageJson = readJSON('package.json') || {}
17 const {name} = packageJson
18 // basic sanity checks
19 /*
20 if (packageJson.private === true) {
21 throw new Error(`"private" is true in package.json; bailing`)
22 } else if (!name) {
23 throw new Error(`package.json is missing a "name" field`)
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 // TODO: add a pending check status to update package.json
40 // if the version doesn't match!
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}