diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index 20ad25569..6d9e55ba9 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -518,37 +518,48 @@ class HXProject extends Script return HXProject.fromPath(path, userDefines); } - public static function fromPath(path:String, userDefines:Map = null):HXProject + public static function fromPath(directory:String, userDefines:Map = null):HXProject { - if (!FileSystem.exists(path) || !FileSystem.isDirectory(path)) + if (!FileSystem.exists(directory) || !FileSystem.isDirectory(directory)) { return null; } - var files = ["include.lime", "include.nmml", "include.xml"]; + var files = ["include.lime", "include.nmml", "include.xml", "include.hxp"]; var projectFile = null; for (file in files) { - if (projectFile == null && FileSystem.exists(Path.combine(path, file))) + if (FileSystem.exists(Path.combine(directory, file))) { - projectFile = Path.combine(path, file); + projectFile = Path.combine(directory, file); + break; } } + var project = null; + if (projectFile != null) { - var project = new ProjectXMLParser(projectFile, userDefines); + if (StringTools.endsWith(projectFile, ".hxp")) + { + var cwd = Sys.getCwd(); + Sys.setCwd(directory); + project = HXProject.fromFile(projectFile, userDefines); + Sys.setCwd(cwd); + } + else + { + project = new ProjectXMLParser(projectFile, userDefines); + } if (project.config.get("project.rebuild.path") == null) { - project.config.set("project.rebuild.path", Path.combine(path, "project")); + project.config.set("project.rebuild.path", Path.combine(directory, "project")); } - - return project; } - return null; + return project; } private function getHaxelibVersion(haxelib:Haxelib):String diff --git a/tools/CommandLineTools.hx b/tools/CommandLineTools.hx index 25fe2c319..62d143da8 100644 --- a/tools/CommandLineTools.hx +++ b/tools/CommandLineTools.hx @@ -1180,7 +1180,7 @@ class CommandLineTools if ((extension == "lime" && file != "include.lime") || (extension == "nmml" && file != "include.nmml") || (extension == "xml" && file != "include.xml") - || extension == "hxp") + || (extension == "hxp" && file != "include.hxp")) { matches.get(extension).push(path); }