2025-01-15 19:42:35 +01:00

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();