UNPKG

1.37 kBJavaScriptView Raw
1'use strict';
2
3const CachingWriter = require('broccoli-caching-writer');
4const fs = require('fs');
5const path = require('path');
6const generateManifestFromConfiguration = require('../generate-manifest-from-configuration');
7const getManifestConfiguration = require('../get-manifest-configuration');
8const validate = require('web-app-manifest-validator');
9const fuzzyPurgeRequireEntry = require('../fuzzy-purge-require-entry');
10
11class GenerateManifest extends CachingWriter {
12 constructor(inputNode, options) {
13 super([inputNode], {
14 annotation: 'generate manifest.webmanifest'
15 });
16
17 this.options = options;
18 }
19
20 clearConfigGeneratorCache() {
21 fuzzyPurgeRequireEntry(
22 path.join(this.options.project.root, 'config', 'manifest.js')
23 );
24 }
25
26 build() {
27 this.clearConfigGeneratorCache();
28
29 let outputFilePath = path.join(this.outputPath, this.options.manifestName);
30 fs.writeFileSync(
31 outputFilePath,
32 JSON.stringify(this.generateManifest()) + '\n'
33 );
34 }
35
36 generateManifest() {
37 let manifest = generateManifestFromConfiguration(
38 getManifestConfiguration(this.options.project, this.options.env)
39 );
40 let ui = this.options.ui;
41
42 validate(manifest).forEach(function(error) {
43 ui.writeWarnLine('MANIFEST VALIDATION: ' + error);
44 });
45
46 return manifest;
47 }
48}
49
50module.exports = GenerateManifest;