LNXSDK/Kha/Sources/kha/HaxelibRunner.hx

71 lines
1.8 KiB
Haxe
Raw Permalink Normal View History

2025-01-22 16:18:30 +01:00
package kha;
import haxe.io.Path;
import sys.FileSystem;
class HaxelibRunner {
static function main() {
if (Sys.systemName() != "Windows") {
var tools = [
Path.join([Sys.getCwd(), "Tools", "nodejs", "node"]),
Path.join([Sys.getCwd(), "Tools", "kravur", "kravur"]),
Path.join([Sys.getCwd(), "Tools", "oggenc", "oggenc"]),
Path.join([Sys.getCwd(), "Kore", "Tools", "krafix", "krafix"]),
Path.join([Sys.getCwd(), "Kore", "Tools", "kraffiti", "kraffiti"])
];
for (tool in tools)
chmod(tool);
}
var io = Path.join([Sys.getCwd(), "Tools", "nodejs", "node" + sysExt()]);
var args = Sys.args();
args.unshift(Path.join([Sys.getCwd(), "Tools", "khamake", "khamake.js"]));
var project = Path.normalize(args.pop());
args.push("--from");
args.push(project);
args.push("--to");
args.push(Path.join([project, "build"]));
args.push("--haxe");
args.push(haxePath());
args.push("--kha");
args.push(Path.normalize(Sys.getCwd()));
if (Sys.systemName() == "Windows")
Sys.exit(Sys.command('"' + io + '"', args));
else
Sys.exit(Sys.command(io, args));
}
static function chmod(path: String): Void {
Sys.command("chmod", ["a+x", path + sysExt()]);
}
static function haxePath(): String {
var path = Sys.getEnv("HAXEPATH");
if (path == null) {
path = "/usr/local/lib/haxe";
if (!FileSystem.exists(path) || !FileSystem.isDirectory(path)) {
path = "/usr/lib/haxe";
}
}
return Path.normalize(path);
}
static function sysExt(): String {
switch (Sys.systemName()) {
case "Linux":
var process = new sys.io.Process("uname", ["-m"]);
var value = process.stdout.readAll().toString();
return "-linux" + (value.indexOf("64") != -1 ? "64" : "32");
case "Windows":
return ".exe";
case "Mac":
return "-osx";
default:
return "";
}
}
}