UNPKG

includejs

Version:

IncludeJS Resource Builder Tool

103 lines (89 loc) 2.57 kB
! function(g) { var fs = require('fs'), fsextra = require('fs.extra'), copyFileSync = function(srcFile, destFile) { var BUF_LENGTH, buff, bytesRead, fdr, fdw, pos; BUF_LENGTH = 64 * 1024; buff = new Buffer(BUF_LENGTH); fdr = fs.openSync(srcFile, 'r'); fdw = fs.openSync(destFile, 'w'); bytesRead = 1; pos = 0; while (bytesRead > 0) { bytesRead = fs.readSync(fdr, buff, 0, BUF_LENGTH, pos); fs.writeSync(fdw, buff, 0, bytesRead); pos += bytesRead; } fs.closeSync(fdr); return fs.closeSync(fdw); }, walk = function(dir, root) { var results = [], files = fs.readdirSync(dir); if (root == null) root = ''; function combine(_1, _2) { if (!_1) return _2; if (!_2) return _1; if (_2[0] == '/') _2 = _2.substring(1); if (_1[_1.length - 1] == '/') return _1 + _2; return _1 + '/' + _2; } for (var i = 0, x, length = files.length; x = files[i], i < length; i++) { if (fs.statSync(combine(dir, x)).isDirectory()) { results = results.concat(walk(combine(dir, x), combine(root, x))); continue; } results.push(combine(root, x)); } return results; }; include.exports = { file: { save: function(path, content) { var folder = g.urlhelper.getDir(path); if (folder && fs.existsSync(folder) == false) { fsextra.mkdirpSync(folder); } fs.writeFileSync(path, content); }, copy: function(from, to, callback) { console.assert(from, 'file/copy - invalid copyFrom'); console.assert(to, 'file/copy - invalid copyTo'); if (fs.existsSync(from) == false) { console.error('file/copy - 404 Error', from); callback && callback(404); } var folder = urlhelper.getDir(to); if (fs.existsSync(folder) == false) { fsextra.mkdirpSync(folder); } fs.copy(from, to, callback); }, copySync: function(from, to) { if (fs.existsSync(from) == false) { console.error('file/copy - 404 Error', from); } var folder = urlhelper.getDir(to); if (fs.existsSync(folder) == false) fsextra.mkdirpSync(folder); copyFileSync(from, to); }, exists: function(file) { return fs.existsSync(file); }, readSync: function(file) { return fs.readFileSync(file, 'utf-8'); } }, dir: { filesSync: function(dir) { return walk(dir); }, ensure: function(dir) { if (fs.existsSync(dir) == false) { fsextra.mkdirpSync(dir); } } } } }(global);