123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- var fs = require('fs');
- var nodePath = require('path');
- var dir = __dirname + '/../';
- var read = function(path){
- return fs.readFileSync(nodePath.join(dir, path)).toString();
- }
- var write = function(path, data){
- return fs.writeFileSync(nodePath.join(dir, path), data);
- }
- var rm = function(path, full) {
- path = full || nodePath.join(dir, path);
- if(!fs.existsSync(path)){ return }
- fs.readdirSync(path).forEach(function(file,index){
- var curPath = path + "/" + file;
- if(fs.lstatSync(curPath).isDirectory()) { // recurse
- rm(null, curPath);
- } else { // delete file
- fs.unlinkSync(curPath);
- }
- });
- fs.rmdirSync(path);
- };
- var mk = function(path){
- path = nodePath.join(dir, path);
- if(fs.existsSync(path)){ return }
- fs.mkdirSync(path);
- }
- var between = function(text, start, end){
- end = end || start;
- var s = text.indexOf(start);
- if(s < 0){ return ''}
- s += start.length;
- var e = text.indexOf(end, s);
- if(e < 0){ return '' }
- var code = text.slice(s, e);
- return {s: s, t: code, e: e};
- }
- var next = function(start, end){
- end = end || start;
- if(!next.text){
- next.text = start;
- return;
- }
- var code = between(next.text, start, end);
- next.text = next.text.slice(code.e + end.length);
- return code.t;
- }
- var path = function(p){
- var code = next(',', ')');
- var path;
- try{path = eval(code);
- }catch(e){console.log("fail", e)};
- if(!path){ return }
- if('.js' !== path.slice(-3)){
- path += '.js';
- }
- return nodePath.join('./'+(p||'src'), path);
- }
- var undent = function(code, n){
- var regex = /\n\t\t/g;
- if(1 === n){
- regex = /\n\t/g;
- }
- return code.replace(regex, '\n');
- }
- ;(function(){
- var arg = process.argv[2] || 'gun';
- if('gun' === arg){
- rm('./src');
- mk('./src');
- mk('./src/polyfill');
- mk('./src/adapters');
- } else {
- rm('./'+arg);
- mk('./'+arg);
- }
- var f = read(arg+'.js');
- var code = next(f);
- code = next("/* UNBUILD */");
-
- if('gun' === arg){
- write('src/polyfill/unbuild.js', undent(code, 1));
- arg = '';
- }
- (function recurse(c){
- code = next(";USE(function(module){", "})(USE");
- if(!code){ return }
- var file = path(arg);
- if(!file){ return }
- code = code.replace(/\bUSE\(/g, 'require(');
- write(file, undent(code));
- recurse();
- }());
- }());
|