1 | 'use strict'
|
2 |
|
3 | const vendors = require('./vendors.json')
|
4 |
|
5 | const env = process.env
|
6 |
|
7 |
|
8 | Object.defineProperty(exports, '_vendors', {
|
9 | value: vendors.map(function (v) { return v.constant })
|
10 | })
|
11 |
|
12 | exports.name = null
|
13 | exports.isPR = null
|
14 |
|
15 | vendors.forEach(function (vendor) {
|
16 | const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env]
|
17 | const isCI = envs.every(function (obj) {
|
18 | return checkEnv(obj)
|
19 | })
|
20 |
|
21 | exports[vendor.constant] = isCI
|
22 |
|
23 | if (isCI) {
|
24 | exports.name = vendor.name
|
25 |
|
26 | switch (typeof vendor.pr) {
|
27 | case 'string':
|
28 |
|
29 | exports.isPR = !!env[vendor.pr]
|
30 | break
|
31 | case 'object':
|
32 | if ('env' in vendor.pr) {
|
33 |
|
34 | exports.isPR = vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne
|
35 | } else if ('any' in vendor.pr) {
|
36 |
|
37 | exports.isPR = vendor.pr.any.some(function (key) {
|
38 | return !!env[key]
|
39 | })
|
40 | } else {
|
41 |
|
42 | exports.isPR = checkEnv(vendor.pr)
|
43 | }
|
44 | break
|
45 | default:
|
46 |
|
47 | exports.isPR = null
|
48 | }
|
49 | }
|
50 | })
|
51 |
|
52 | exports.isCI = !!(
|
53 | env.CI ||
|
54 | env.CONTINUOUS_INTEGRATION ||
|
55 | env.BUILD_NUMBER ||
|
56 | env.RUN_ID ||
|
57 | exports.name ||
|
58 | false
|
59 | )
|
60 |
|
61 | function checkEnv (obj) {
|
62 | if (typeof obj === 'string') return !!env[obj]
|
63 | return Object.keys(obj).every(function (k) {
|
64 | return env[k] === obj[k]
|
65 | })
|
66 | }
|