UNPKG

1.43 kBJavaScriptView Raw
1'use strict';
2
3const CachingWriter = require('broccoli-caching-writer');
4const fs = require('fs');
5const path = require('path');
6const generateBrowserconfigFromConfiguration = require('../generate-browserconfig-from-configuration');
7const getManifestConfiguration = require('../get-manifest-configuration');
8const fuzzyPurgeRequireEntry = require('../fuzzy-purge-require-entry');
9
10class 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
49function shouldGenerateBrowserconfig(manifest) {
50 return manifest.ms;
51}
52
53module.exports = GenerateBrowserconfig;