extendscript-bundlr
Version:
a tool for bundling Adobe ExtendScripts that use the `#include 'path/to/file'` statement
128 lines (111 loc) • 4.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.walker = walker;
var _package = require('./../../package.json');
var _package2 = _interopRequireDefault(_package);
var _path = require('path');
var path = _interopRequireWildcard(_path);
var _fs = require('fs');
var fs = _interopRequireWildcard(_fs);
var _writer = require('./writer');
var _reporter = require('./reporter');
var _regularExpressions = require('./regular-expressions');
var _folderExists = require('./folder-exists');
var _messages = require('./messages');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var lineReader = require('line-reader');
var fileExists = require('file-exists');
var abs = require('abs');
var lineCounter = 1;
var includePaths = [];
var sourcefilefolder = null;
function walker(sourcefile, targetfile) {
sourcefilefolder = path.dirname(sourcefile);
includePaths.push(abs(sourcefilefolder));
if (global.verbose) {
console.log((0, _reporter.woohoo)((0, _reporter.pad)('CURRENT INCLUDEPATHS')));
}
if (global.verbose) {
console.log(includePaths);
}
lineReader.eachLine(sourcefile, function (line, last) {
// testing for includepath
var res = (0, _regularExpressions.matcher)(line);
if (res !== null) {
if (global.verbose) {
console.log('tilde? ', (0, _regularExpressions.tildetest)(res.path));
}
if (res.isIncludePath === true) {
// console.log(res.path);
if ((0, _regularExpressions.detectEdgecase)(res.path) === true) {
if (global.verbose) {
console.log((0, _reporter.warn)('[EDGE CASE]:'), (0, _reporter.warn)(JSON.stringify(res.path, null, 2)));
console.log((0, _reporter.warn)('Please write include statements into one single line'));
}
var edgePaths = res.path.split(';');
for (var _i = 0; _i < edgePaths.length; _i++) {
var _p = abs((0, _regularExpressions.cleaner)(edgePaths[_i]));
if ((0, _folderExists.folderExists)(_p) === true) {
if (global.verbose) {
console.log((0, _reporter.warn)('[EXISTS]:', (0, _reporter.woohoo)(_p)));
}
includePaths.push(_p);
}
}
}
var p = abs((0, _regularExpressions.cleaner)(res.path));
// BASIL JS EDGECASE?
if ((0, _folderExists.folderExists)(p) === true) {
if (global.verbose) {
console.log((0, _reporter.warn)('[EXISTS]:', (0, _reporter.woohoo)(p)));
}
includePaths.push(p);
}
} else {
if (global.verbose) {
console.log((0, _reporter.woohoo)((0, _reporter.pad)('POSSIBLE FILE LOCATIONS for ' + res.path)));
}
// let fileDoesExist = false;
for (var i = 0; i < includePaths.length; i++) {
var _p2 = path.resolve(includePaths[i], (0, _regularExpressions.cleaner)(res.path));
if (global.verbose) {
console.log((0, _reporter.warn)('[POSSIBLY FILE]:'), (0, _reporter.say)(_p2));
}
if (fileExists(_p2) === true) {
if (global.verbose) {
console.log((0, _reporter.warn)('[FOUND FILE]:'), (0, _reporter.woohoo)('"' + _p2 + '"'));
}
// let fileDoesExist = true;
try {
var output = fs.readFileSync(_p2, 'utf8');
(0, _writer.append)(targetfile, output, 'wrote content of ' + _p2 + ' to file ' + targetfile, 'woohoo');
break;
} catch (e) {
if (global.verbose) {
console.log((0, _reporter.error)(e));
}
}
} else if (fileExists(_p2) === false && i === includePaths.length - 1) {
if (global.verbose) {
console.log((0, _reporter.warn)('Could not find "' + _p2 + '"'));
}
var _output = line + ('// FILE NOT FOUND by ' + _package2.default.name);
(0, _writer.append)(targetfile, _output, 'could not find ' + _p2 + ' in line ' + lineCounter, 'error');
if (global.missing) {
console.log((0, _reporter.error)(_messages.messages.sourceDoesNotExist(_p2)));
}
} // end of last i loop iteration
} // end of i loop
}
// check if file exists
} else {
// nothing found in this line add it back to output file
var _output2 = line;
(0, _writer.append)(targetfile, _output2, 'nothing found in line ' + lineCounter, 'say');
}
lineCounter++;
}); // end of line reader
}