-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathfix.js
executable file
·72 lines (69 loc) · 2.81 KB
/
fix.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
72
#!/usr/bin/env node
const _ = require('lodash');
const path = require('path');
const autoCropSvg = require('./index');
function getInputFiles() {
if (process.argv[2] === '--recursive') {
console.info('Recursive change');
const dir = process.argv[3] || process.cwd();
var glob = require("glob");
const files = glob.sync('**/*.svg', {cwd: dir });
return {
inputFiles: files.map( (x) => path.resolve(dir, x)),
inputFn: (file) => file,
outputFn: (file) => file
}
} else {
const files = require('fs').readdirSync('input');
const inputFiles = files.filter( (x) => x.indexOf('.processed.') === -1 && x.indexOf('.svg') !== -1);
return {
inputFiles,
inputFn: (file) => `./input/${file}`,
outputFn: (file) => `./output/${file}`
}
}
}
async function main() {
const result = [];
const inputFileOptions = getInputFiles();
const inputFiles = inputFileOptions.inputFiles;
const inputFn = inputFileOptions.inputFn;
const outputFn = inputFileOptions.outputFn;
let riskyCount = 0;
for (var file of inputFiles) {
const inputFile = inputFn(file);
const outputFile = outputFn(file);
const inputContent = require('fs').readFileSync(inputFile, 'utf-8');
try {
console.info(`Processing ${inputFile} and saving to ${outputFile}`);
const output = await autoCropSvg(inputContent);
const convertedSvg = output.result;
const skipRiskyTransformations = output.skipRiskyTransformations;
console.info({skipRiskyTransformations});
if (skipRiskyTransformations) {
riskyCount += 1;
console.info(`We had to skip a risky transformation, total skipped: ${riskyCount}`);
}
require('fs').writeFileSync(outputFile, convertedSvg);
result.push({
name: inputFile,
input: inputContent,
output: convertedSvg
});
console.info(`Processed ${inputFile} and saved to ${outputFile}`);
} catch(ex) {
const message = ex.message || ex;
console.info(`Failed to process ${inputFile}, error is ${message.substring(0, 1000)}`);
result.push({
name: inputFile,
input: inputContent,
output: ""
});
}
}
const compareContent = require('fs').readFileSync('./compare.html', 'utf-8');
const newContent = compareContent.replace(/const files = (.*)$/m, `const files = ${JSON.stringify(result)}`);
require('fs').writeFileSync('/tmp/autocrop-compare.html', newContent);
console.info('Report has been written to file:///tmp/autocrop-compare.html');
}
main().catch(console.info);