-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcli.js
executable file
·59 lines (50 loc) · 1.48 KB
/
cli.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
54
55
56
57
58
59
#! /usr/bin/env node
(function() {
/*eslint no-console: [0]*/
/*eslint strict: [2, "function"]*/
/*eslint no-unused-vars: [0]*/
'use strict';
var fs = require('fs'),
pkg = require('./package.json'),
path = require('path'),
mkdirp = require('mkdirp'),
colors = require('colors'),
blurrd = require('./blurrd'),
program = require('commander');
program
.version(pkg.version)
.usage('[options] <file>')
.option('-s, --selector [value]', 'Image selector for cheerio')
.option('-t, --transformer [value]', 'lazyload|basic (default)', /^(basic|lazyload)$/i, 'basic')
.option('-q, --quality [value]', 'Image compression quality factor', parseInt)
.option('-m, --max [value]', 'Maximum image dimensions', parseInt)
.option('-o, --out [value]', 'Output file')
.parse(process.argv);
if(program.args.length === 0) {
return console.log('No input file provided!'.red);
}
var html;
try {
html = fs.readFileSync(program.args[0], 'utf8');
} catch(err) {
throw err.stack.red;
}
blurrd(html, {
selector: program.selector,
quality: program.quality,
transformer: program.transformer,
max: program.max
}).then(function(result) {
if(program.out) {
mkdirp.sync(path.dirname(program.out));
try {
fs.writeFileSync(program.out, result, 'utf8');
} catch(err) {
throw err.stack.red;
}
console.log('Done!'.green);
} else {
console.log(result);
}
});
})();