forked from emberjs/ember.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfeatures.js
53 lines (40 loc) · 1.25 KB
/
features.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
'use strict';
const fs = require('fs');
const ts = require('./typescript');
function getFeatures() {
let fileName = 'packages/@ember/canary-features/index.ts';
let fileContents = fs.readFileSync(fileName).toString();
let sourceFile = ts.createSourceFile(
fileName,
fileContents,
ts.ScriptTarget.ES2017,
/*setParentNodes */ true
);
let features;
ts.forEachChild(sourceFile, processVariableDeclarations);
function processVariableDeclarations(node) {
if (node.kind === ts.SyntaxKind.VariableDeclaration && node.name.text === 'DEFAULT_FEATURES') {
let featuresText = node.initializer.getFullText();
features = new Function(`return ${featuresText}`)();
return;
}
ts.forEachChild(node, processVariableDeclarations);
}
let featureName;
if (process.env.BUILD_TYPE === 'alpha') {
for (featureName in features) {
if (features[featureName] === null) {
features[featureName] = false;
}
}
}
if (process.env.OVERRIDE_FEATURES) {
let forcedFeatures = process.env.OVERRIDE_FEATURES.split(',');
for (let i = 0; i < forcedFeatures.length; i++) {
featureName = forcedFeatures[i];
features[featureName] = true;
}
}
return features;
}
module.exports = getFeatures();