all-in-one: partially clean up generate-all-in-one.js

This commit is contained in:
Bert Belder 2017-11-28 17:09:19 +01:00
parent d9b8298ccb
commit 4aabde451c

View File

@ -3,37 +3,42 @@
var path = require('path'); var path = require('path');
var fs = require('fs'); var fs = require('fs');
var files = []; // Parse command line options.
var include_dirs = [];
var opt_strip_guards = false;
for (var i = 2; i < process.argv.length; i++) { var files = [];
var arg = process.argv[i]; var includeDirs = [];
var match; var stripGuardsEnabled = false;
if (match = /^-I(.*)$/.exec(arg))
include_dirs.push(match[1]); process.argv
else if (arg === '--strip-guards') .slice(2)
opt_strip_guards = true; .forEach((arg) => {
else let match;
files.push(arg); if (match = /^-I(.*)$/.exec(arg))
} includeDirs.push(match[1]);
else if (arg === '--strip-guards')
stripGuardsEnabled = true;
else
files.push(arg);
});
var included = {}; var included = {};
function load(filename) { function readFileWithPath(fileName, dirs) {
if (/[\/\\]/.test(filename)) if (/[/\\]/.test(fileName))
return fs.readFileSync(filename, 'utf8'); return fs.readFileSync(fileName, 'utf8');
var PATH = ['.'].concat(include_dirs); for (let i = 0; i < dirs.length; i++) {
for (; ;) { var filePath = path.resolve(dirs[i], fileName);
var dir = PATH.shift();
try { try {
return fs.readFileSync(dir + '/' + filename, 'utf8'); return fs.readFileSync(filePath, 'utf8');
} catch (e) { } catch (e) {
if (PATH.length == 0) // Ignore.
throw e;
} }
} }
var err = new Error('file not found: ' + fileName);
err.code = 'ENOENT'
throw err;
} }
function strip_guards(filename, source) { function strip_guards(filename, source) {
@ -64,7 +69,7 @@ function strip_guards(filename, source) {
} }
function lines(filename, strip) { function lines(filename, strip) {
var source = load(filename); var source = readFileWithPath(filename, ['.'].concat(includeDirs));
if (strip) source = strip_guards(filename, source); if (strip) source = strip_guards(filename, source);
return source.split(/\r?\n/g); return source.split(/\r?\n/g);
} }
@ -86,7 +91,7 @@ function add(filename) {
var key = path.basename(filename).toLowerCase(); var key = path.basename(filename).toLowerCase();
console.error('Adding: ' + key); console.error('Adding: ' + key);
included[key] = true; included[key] = true;
return lines(filename, opt_strip_guards); return lines(filename, stripGuardsEnabled);
} }
var sys_included = {}; var sys_included = {};