Initial support for haxelib 'path' attribute

This commit is contained in:
Joshua Granick
2016-02-15 12:46:37 -08:00
parent f21fe6bc2b
commit ac0085908c
2 changed files with 92 additions and 68 deletions

View File

@@ -988,81 +988,91 @@ class HXProject {
#if (lime && !lime_legacy)
var cache = LogHelper.verbose;
LogHelper.verbose = false;
var output = "";
try {
if (PathHelper.haxelibOverrides.exists (name)) {
output = ProcessHelper.runProcess ("", "haxelib", [ "path", name ], true, true, true);
var param = "-cp " + PathHelper.haxelibOverrides.get (name);
compilerFlags.remove (param);
compilerFlags.push (param);
} catch (e:Dynamic) { }
LogHelper.verbose = cache;
var split = output.split ("\n");
var haxelibName = null;
for (arg in split) {
} else {
arg = StringTools.trim (arg);
var cache = LogHelper.verbose;
LogHelper.verbose = false;
var output = "";
if (arg != "") {
try {
if (!StringTools.startsWith (arg, "-")) {
output = ProcessHelper.runProcess ("", "haxelib", [ "path", name ], true, true, true);
} catch (e:Dynamic) { }
LogHelper.verbose = cache;
var split = output.split ("\n");
var haxelibName = null;
for (arg in split) {
arg = StringTools.trim (arg);
if (arg != "") {
var path = PathHelper.standardize (arg);
if (path != null && StringTools.trim (path) != "") {
if (!StringTools.startsWith (arg, "-")) {
var param = "-cp " + path;
compilerFlags.remove (param);
compilerFlags.push (param);
var path = PathHelper.standardize (arg);
}
var version = "0.0.0";
var jsonPath = PathHelper.combine (path, "haxelib.json");
try {
if (FileSystem.exists (jsonPath)) {
if (path != null && StringTools.trim (path) != "") {
var json = Json.parse (File.getContent (jsonPath));
haxelibName = json.name;
compilerFlags = ArrayHelper.concatUnique (compilerFlags, [ "-D " + haxelibName + "=" + json.version ], true);
var param = "-cp " + path;
compilerFlags.remove (param);
compilerFlags.push (param);
}
} catch (e:Dynamic) {}
} else {
if (StringTools.startsWith (arg, "-D ") && arg.indexOf ("=") == -1) {
var version = "0.0.0";
var jsonPath = PathHelper.combine (path, "haxelib.json");
var name = arg.substr (3);
if (name != haxelibName) {
try {
compilerFlags = ArrayHelper.concatUnique (compilerFlags, [ "-D " + name ], true);
if (FileSystem.exists (jsonPath)) {
var json = Json.parse (File.getContent (jsonPath));
haxelibName = json.name;
compilerFlags = ArrayHelper.concatUnique (compilerFlags, [ "-D " + haxelibName + "=" + json.version ], true);
}
} catch (e:Dynamic) {}
} else {
if (StringTools.startsWith (arg, "-D ") && arg.indexOf ("=") == -1) {
var name = arg.substr (3);
if (name != haxelibName) {
compilerFlags = ArrayHelper.concatUnique (compilerFlags, [ "-D " + name ], true);
}
/*var haxelib = new Haxelib (arg.substr (3));
var path = PathHelper.getHaxelib (haxelib);
var version = getHaxelibVersion (haxelib);
if (path != null) {
CompatibilityHelper.patchProject (this, haxelib, version);
compilerFlags = ArrayHelper.concatUnique (compilerFlags, [ "-D " + haxelib.name + "=" + version ], true);
}*/
} else if (!StringTools.startsWith (arg, "-L")) {
compilerFlags = ArrayHelper.concatUnique (compilerFlags, [ arg ], true);
}
/*var haxelib = new Haxelib (arg.substr (3));
var path = PathHelper.getHaxelib (haxelib);
var version = getHaxelibVersion (haxelib);
if (path != null) {
CompatibilityHelper.patchProject (this, haxelib, version);
compilerFlags = ArrayHelper.concatUnique (compilerFlags, [ "-D " + haxelib.name + "=" + version ], true);
}*/
} else if (!StringTools.startsWith (arg, "-L")) {
compilerFlags = ArrayHelper.concatUnique (compilerFlags, [ arg ], true);
}
}

View File

@@ -970,6 +970,7 @@ class ProjectXMLParser extends HXProject {
var name = substitute (element.att.name);
var version = "";
var optional = false;
var path = null;
if (element.has.version) {
@@ -983,6 +984,12 @@ class ProjectXMLParser extends HXProject {
}
if (element.has.path) {
path = substitute (element.att.path);
}
/*if (name == "nme" && defines.exists ("openfl")) {
name = "openfl-nme-compatibility";
@@ -991,21 +998,28 @@ class ProjectXMLParser extends HXProject {
}*/
var haxelib = new Haxelib (name, version);
var path;
if (defines.exists ("setup")) {
if (path == null) {
path = PathHelper.getHaxelib (haxelib);
if (defines.exists ("setup")) {
path = PathHelper.getHaxelib (haxelib);
} else {
path = PathHelper.getHaxelib (haxelib, !optional);
if (optional && path == "") {
continue;
}
}
} else {
path = PathHelper.getHaxelib (haxelib, !optional);
if (optional && path == "") {
continue;
}
PathHelper.haxelibOverrides.set (name, path);
}