includejs
Version:
IncludeJS Resource Builder Tool
106 lines (91 loc) • 3.32 kB
JavaScript
void
function() {
var exec = require('child_process').exec;
var CloneFactory = Class({
Construct: function(dir, list, idfr) {
this.list = list;
this.index = -1;
this.idfr = idfr;
this.dir = dir;
},
process: function() {
if (++this.index > this.list.length - 1) {
this.idfr && this.idfr.resolve && this.idfr.resolve();
return;
}
var repo = this.list[this.index];
exec('git clone ' + repo.path, {
cwd: this.dir
}, function(error, stdout, stderr) {
if (error) {
console.log('error', error, stderr);
return;
}
if (repo.name) {
var dirname = repo.path.replace(/.+\/([^\/]+)\.git/g, '$1');
var dir;
dir = new io.Directory(this.dir);
dir.uri = dir.uri.combine(dirname);
dir.rename(repo.name);
}
this.process();
}.bind(this))
}
});
var RoutesJob = Class({
Construct: function(libjsDir) {
if (libjsDir[libjsDir.length - 1] != '/') libjsDir = libjsDir + '/';
var file = new io.File(new net.URI(io.env.applicationDir).combine('globals.txt'));
var globals = {
projects: {
libjs: {
path: "file:///" + libjsDir
}
},
defaultRoutes: {
lib: "{libjs}/{0}/lib/{1}.js",
framework: "{libjs}/ruqq/lib/{0}.js",
compo: "{libjs}/compos/{0}/lib/{1}.js"
}
}
file.write(JSON.stringify(globals, null, 4));
}
})
var Git = {
clone: function(list) {
var dir = new io.Directory(io.env.currentDir);
dir.uri = dir.uri.combine('libjs/');
if (dir.exists()) {
console.error('LibJS Directory Already Exists');
return;
}
dir.ensure();
list = [{
path: 'git://github.com/tenbits/ClassJS.git',
name: 'class'
}, {
path: 'git://github.com/tenbits/IncludeJS.git',
name: 'include'
}, {
path: 'git://github.com/tenbits/MaskJS.git',
name: 'mask'
}, {
path: 'git://github.com/tenbits/RuqqJS.git',
name: 'ruqq'
}, {
path: 'git://github.com/tenbits/CompoJS.git',
name: 'compo'
}, {
path: 'git://github.com/tenbits/Compos.git',
name: 'compos'
}];
new CloneFactory(dir.uri.toLocalDir(), list, {
resolve: function(){
new RoutesJob(dir.uri.toLocalDir());
}
}).process();
}
}
// run it
Git.clone('');
}();