From ac0085908c077a656ba99a4df542defcd9143274 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Mon, 15 Feb 2016 12:46:37 -0800 Subject: [PATCH] Initial support for haxelib 'path' attribute --- lime/project/HXProject.hx | 126 +++++++++++++++++-------------- lime/project/ProjectXMLParser.hx | 34 ++++++--- 2 files changed, 92 insertions(+), 68 deletions(-) diff --git a/lime/project/HXProject.hx b/lime/project/HXProject.hx index 5963a8c06..ea3f8f0c1 100644 --- a/lime/project/HXProject.hx +++ b/lime/project/HXProject.hx @@ -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); - } } diff --git a/lime/project/ProjectXMLParser.hx b/lime/project/ProjectXMLParser.hx index 9feeac892..3d9cddc62 100644 --- a/lime/project/ProjectXMLParser.hx +++ b/lime/project/ProjectXMLParser.hx @@ -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); }