-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathreal-favicon-inject.js
executable file
·45 lines (38 loc) · 1.32 KB
/
real-favicon-inject.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
'use strict';
require('./common');
var program = require('commander');
var pack = require('./package.json');
var rfg = require('rfg-api').init();
var path = require('path');
var Promise = require('bluebird');
var fs = Promise.promisifyAll(require('fs'));
var glob = require('glob');
var args = program
.version(pack.version)
.command('inject <faviconFile> <outputDir> <htmlFiles...>')
.parse(process.argv).args;
var outputDir = args[1];
var htmlFiles = args.slice(2);
var markups = fs.readFileAsync(args[0]).then(function(data){
return(JSON.parse(data).favicon.html_code);
});
Promise.resolve(htmlFiles).map(function(pattern){
return(Promise.fromCallback(function (callback) {
glob(pattern, callback);
}));
}).then(function(fileArrays){
// Flatten array
return([].concat.apply([], fileArrays));
}).map(function(htmlFile) {
return Promise.join(fs.readFileAsync(htmlFile), markups, function(content, markups) {
return(Promise.fromCallback(function (callback) {
rfg.injectFaviconMarkups(content, markups, null, callback);
}));
}).then(function (content) {
return (fs.writeFileAsync(path.join(outputDir, path.basename(htmlFile)), content));
});
}).then(function(){
console.log('Injection completed, ' + htmlFiles.length + ' files were processed');
}).catch(function(err){
console.error(err);
});