forked from imagemin/optipng-bin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.js
71 lines (63 loc) · 1.9 KB
/
build.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
60
61
62
63
64
65
66
67
68
69
70
71
'use strict';
var exec = require('child_process').exec;
var path = require('path');
var which = require('which');
var colors = require('colors');
var tar = require('tar');
var request = require('request');
var zlib = require('zlib');
var version = '0.7.4';
var binPath = require('./lib/optipng-bin').path;
var tmpPath = path.join(tmpdir(), 'optipng-' + version);
var urlPath = 'http://downloads.sourceforge.net/project/optipng/OptiPNG/optipng-' + version + '/optipng-' + version + '.tar.gz';
var win32 = process.platform === 'win32';
function tmpdir() {
if (win32) {
return process.env.TEMP ||
process.env.TMP ||
(process.env.SystemRoot || process.env.windir) + '\\temp';
} else {
return process.env.TMPDIR ||
process.env.TMP ||
process.env.TEMP ||
'/tmp';
}
}
module.exports = function () {
if (process.platform === 'darwin' || process.platform === 'linux') {
var opts = {
type: 'Directory',
path: tmpPath,
strip: 1
};
var proxy = process.env.http_proxy || process.env.HTTP_PROXY ||
process.env.https_proxy || process.env.HTTPS_PROXY || '';
console.log('Fetching %s...'.yellow, urlPath);
var req = request.defaults({ proxy: proxy }).get(urlPath, function (err, resp) {
if (resp.statusCode !== 200) {
throw err;
}
});
req
.pipe(zlib.Gunzip())
.pipe(tar.Extract(opts))
.on('close', function () {
console.log('Done in %s'.green, tmpPath);
which('make', function (err) {
if (err) {
throw err;
}
console.log('\nBuilding OptiPNG...'.yellow);
var binDir = path.dirname(binPath);
var buildScript = './configure --with-system-zlib --bindir=' + binDir + ' --mandir=man && ' +
'make install';
exec(buildScript, { cwd: tmpPath }, function (err) {
if (err) {
throw err;
}
console.log('OptiPNG rebuilt successfully'.green);
});
});
});
}
};