1 | 'use strict';
|
2 |
|
3 | const CachingWriter = require('broccoli-caching-writer');
|
4 | const fs = require('fs');
|
5 | const path = require('path');
|
6 | const generateBrowserconfigFromConfiguration = require('../generate-browserconfig-from-configuration');
|
7 | const getManifestConfiguration = require('../get-manifest-configuration');
|
8 | const fuzzyPurgeRequireEntry = require('../fuzzy-purge-require-entry');
|
9 |
|
10 | class GenerateBrowserconfig extends CachingWriter {
|
11 | constructor(inputNode, options) {
|
12 | super([inputNode], {
|
13 | annotation: 'generate browserconfig.xml'
|
14 | });
|
15 |
|
16 | this.options = options;
|
17 | }
|
18 |
|
19 | clearConfigGeneratorCache() {
|
20 | fuzzyPurgeRequireEntry(
|
21 | path.join(this.options.project.root, 'config', 'manifest.js')
|
22 | );
|
23 | }
|
24 |
|
25 | build() {
|
26 | this.clearConfigGeneratorCache();
|
27 |
|
28 | const options = this.options;
|
29 |
|
30 | const manifest = getManifestConfiguration(options.project, options.env);
|
31 |
|
32 | if (shouldGenerateBrowserconfig(manifest)) {
|
33 | const outputFilePath = path.join(
|
34 | this.outputPath, options.browserconfigName
|
35 | );
|
36 | const browserconfig = generateBrowserconfigFromConfiguration(
|
37 | manifest, options.ui
|
38 | );
|
39 |
|
40 | fs.writeFileSync(outputFilePath, browserconfig);
|
41 | }
|
42 | }
|
43 |
|
44 | static shouldGenerateBrowserconfig(manifest) {
|
45 | return shouldGenerateBrowserconfig(manifest);
|
46 | }
|
47 | }
|
48 |
|
49 | function shouldGenerateBrowserconfig(manifest) {
|
50 | return manifest.ms;
|
51 | }
|
52 |
|
53 | module.exports = GenerateBrowserconfig;
|