UNPKG

extendscript-bundlr

Version:

a tool for bundling Adobe ExtendScripts that use the `#include 'path/to/file'` statement

128 lines (111 loc) 4.9 kB
'use strict'; 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 }