UNPKG

includejs

Version:

IncludeJS Resource Builder Tool

101 lines (79 loc) 3.63 kB
include.js({ helper: 'referenceHelper::refHelper' }).done(function(resp) { include.exports = { action: function(type) { switch (type) { case 'import': importResources() && rewriteRoutes('reference','import'); break; case 'reference': referenceResources() && rewriteRoutes('import','reference'); break; default: console.error('Unknown Resource Type'); break; } } } var rewriteRoutes = function(from, to) { global.parser.html.rewriteUrls(global.solution.resource, '.' + from + '/', '.' + to + '/'); var routes = new io.File(global.solution.uri.combine('include.routes.js')); if (routes.exists()) { var source = routes.read(); source = source.replace(new RegExp('([\'"]{1}[\s]*\/?)\.' + from + '\/', 'g'), '$1.' + to + '/'); routes.write(source); } new io.File(global.solution.resource.uri).write(global.solution.resource.source); } var referenceResources = (function(){ return function(){ var globals = JSON.parse(new io.File(io.env.applicationDir.combine('globals.txt')).read()), referenceDir = io.env.applicationDir.combine('.reference/'); var routes = new io.File(io.env.currentDir.combine('include.routes.js')); if (routes.exists() == false){ console.error('"%s" does not exists', file.uri.toString()); return 0; } var include = { cfg: function(cfg){ routes = cfg; } } eval(routes.read()); for(var key in routes){ if (routes[key].indexOf('.import') == -1) continue; var projectName = routes[key].replace(/^.*\.import\/([^\/]+).+/g,'$1'); if (!projectName || projectName in globals.projects == false){ console.error('Project "%s" not defined in globals', projectName); return 0; } var reference = new net.URI(globals.projects[projectName].path); resp.refHelper.create(new net.URI(global.solution.uri.toDir()), projectName, reference) } return 1; } })(); var importResources = (function() { function processCopy(parent, processed) { if (processed == null) processed = {}; ruqq.arr.each(parent.includes, function(x) { if (processed[x.uri.toString()]) return; if (x.uri.path.indexOf('/.reference/') > -1) { var uri; uri = x.uri.combine(''); uri.path = uri.path.replace(/\/\.reference\//, '/.import/'); new io.File(x.uri).copyTo(uri); x.rewrite = uri.toRelativeString(io.env.currentDir); processed[x.uri.toString()] = x; } processCopy(x, processed); }); return processed; }; return function() { processCopy(global.solution.resource); return 1; }; })(); });