96 lines
2.7 KiB
JavaScript
96 lines
2.7 KiB
JavaScript
#!/usr/bin/env node
|
|
var os = require('os');
|
|
var fsx = require('fs-extra');
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var packageConfig = require('./lib/package-config');
|
|
var haxeUrl = require('./lib/haxe-url');
|
|
var vars = require('./lib/vars');
|
|
var localConfig = require('./package.json');
|
|
var Cache = require('./lib/cache');
|
|
var TaskRunner = require('./lib/task-runner').TaskRunner;
|
|
var ClearTask = require('./lib/clear-task').ClearTask;
|
|
var DownloadHaxeTask = require('./lib/download-haxe-task').DownloadHaxeTask;
|
|
var DownloadHaxelibTask = require('./lib/download-haxelib-task').DownloadHaxelibTask;
|
|
var DownloadNekoTask = require('./lib/download-neko-task').DownloadNekoTask;
|
|
var InstallHaxelibDependenciesTask = require('./lib/install-haxelib-dependencies-task').InstallHaxelibDependenciesTask;
|
|
|
|
|
|
function findPackageJson() {
|
|
var startPath = process.cwd();
|
|
var ignore = 0;
|
|
|
|
var searchPath = path.join(startPath + '/..');
|
|
var fileFound = false;
|
|
var nextPath = '';
|
|
var numSearch = 0;
|
|
|
|
while (!fileFound) {
|
|
searchPath = nextPath || searchPath;
|
|
numSearch++;
|
|
if(numSearch>4){
|
|
return false;
|
|
}
|
|
try {
|
|
fs.statSync(path.join(searchPath + '/package.json'));
|
|
if (ignore > 0) {
|
|
ignore--;
|
|
} else {
|
|
fileFound = true;
|
|
}
|
|
} catch (err) {}
|
|
|
|
nextPath = path.join(searchPath + '/..');
|
|
if (nextPath === path.normalize('/') || nextPath === '.' || nextPath === '..') {
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (fileFound) {
|
|
return {
|
|
read: function () {
|
|
return fs.readFileSync(path.join(searchPath + '/package.json'), 'utf8');
|
|
},
|
|
parse: function () {
|
|
return JSON.parse(fs.readFileSync(path.join(searchPath + '/package.json'), 'utf8'));
|
|
},
|
|
path: path.join(searchPath + '/package.json')
|
|
};
|
|
}
|
|
|
|
return false;
|
|
};
|
|
var pack = findPackageJson();
|
|
|
|
function getHaxeDependencies(){
|
|
var deps = [];
|
|
try {
|
|
deps = pack.parse().haxeDependencies;
|
|
} catch (error){
|
|
console.warn('no dependencies');
|
|
}
|
|
return deps;
|
|
}
|
|
|
|
function getVersion(module){
|
|
var version = packageConfig(module);
|
|
try {
|
|
version = getHaxeDependencies()[module];
|
|
} catch (error){
|
|
console.warn('using default '+ module +' version');
|
|
}
|
|
if(version == undefined){
|
|
version = localConfig.haxeDependencies[module];
|
|
}
|
|
return version;
|
|
}
|
|
|
|
var runner = new TaskRunner();
|
|
|
|
runner.addTask(new ClearTask());
|
|
runner.addTask(new DownloadHaxeTask(getVersion('haxe')));
|
|
runner.addTask(new DownloadHaxelibTask(getVersion('haxelib')));
|
|
runner.addTask(new DownloadNekoTask(getVersion('neko')));
|
|
runner.addTask(new InstallHaxelibDependenciesTask(getHaxeDependencies()));
|
|
|
|
runner.run(); |