Add support for include.hxp.

Note that all paths in an include.hxp file must be absolute.
Fortunately, `Sys.getCwd()` works as expected.
This commit is contained in:
Joseph Cloutier
2021-11-06 14:56:31 -04:00
parent 80b9b89908
commit 1b310dcc45

View File

@@ -540,37 +540,48 @@ class HXProject extends Script
return HXProject.fromPath(path, userDefines); return HXProject.fromPath(path, userDefines);
} }
public static function fromPath(path:String, userDefines:Map<String, Dynamic> = null):HXProject public static function fromPath(directory:String, userDefines:Map<String, Dynamic> = null):HXProject
{ {
if (!FileSystem.exists(path) || !FileSystem.isDirectory(path)) if (!FileSystem.exists(directory) || !FileSystem.isDirectory(directory))
{ {
return null; return null;
} }
var files = ["include.lime", "include.nmml", "include.xml"]; var files = ["include.lime", "include.nmml", "include.xml", "include.hxp"];
var projectFile = null; var projectFile = null;
for (file in files) 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) 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) 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 private function getHaxelibVersion(haxelib:Haxelib):String