98 lines
2.6 KiB
Java
98 lines
2.6 KiB
Java
package net.montoyo.mcef.utilities;
|
|
|
|
import net.montoyo.mcef.MCEF;
|
|
import net.montoyo.mcef.utilities.Log;
|
|
import org.cef.OS;
|
|
|
|
import java.util.Locale;
|
|
|
|
public class Platform {
|
|
|
|
public static String id;
|
|
public static String idFull;
|
|
public static String arch;
|
|
public static String archFull;
|
|
public static String PLATFORM;
|
|
public static String PLATFORMFULL;
|
|
|
|
static { // Static block for initialization
|
|
detectPlatform();
|
|
}
|
|
|
|
private static void detectPlatform() {
|
|
try {
|
|
id = System.getProperty("os.name", "unknown").toLowerCase(Locale.US);
|
|
arch = System.getProperty("os.arch", "unknown").toLowerCase(Locale.US);
|
|
} catch (Exception e) {
|
|
Log.error("Couldn't get OS name or architecture.");
|
|
id = "unknown";
|
|
arch = "unknown";
|
|
}
|
|
|
|
// Normalize OS name
|
|
if (OS.isWindows()) {
|
|
id = "win";
|
|
idFull = "windows";
|
|
} else if (OS.isMacintosh()) {
|
|
id = "mac";
|
|
idFull = "macos";
|
|
} else if (OS.isLinux()) {
|
|
id = "linux";
|
|
idFull = "linux";
|
|
} else {
|
|
Log.error("Your OS isn't supported by MCEF.");
|
|
id = "unknown";
|
|
idFull = "unknown";
|
|
return;
|
|
}
|
|
|
|
// Normalize CPU architecture
|
|
if (arch.equals("x86_64") || arch.equals("amd64") || arch.equals("64")) {
|
|
arch = "64";
|
|
archFull = "amd64";
|
|
} else if (arch.equals("aarch64") || arch.equals("arm64")) {
|
|
if (!id.equals("mac") || !id.equals("darwin")) { // Only allow ARM64 for Macs
|
|
Log.error("ARM-based platforms other than Mac are not supported by MCEF.");
|
|
id = "unknown";
|
|
idFull = "unknown";
|
|
return;
|
|
}
|
|
arch = "arm64";
|
|
archFull = "arm64";
|
|
} else {
|
|
Log.error("Your CPU architecture isn't supported by MCEF.");
|
|
id = "unknown";
|
|
idFull = "unknown";
|
|
return;
|
|
}
|
|
|
|
// Set platform strings
|
|
PLATFORM = id + arch;
|
|
PLATFORMFULL = idFull + "_" + archFull;
|
|
}
|
|
|
|
public static String getOS() {
|
|
return id;
|
|
}
|
|
|
|
public static String getPlatform() {
|
|
return PLATFORM;
|
|
}
|
|
|
|
public static String getPlatformFull() {
|
|
return PLATFORMFULL;
|
|
}
|
|
|
|
public static boolean isWindows() {
|
|
return "win".equals(id);
|
|
}
|
|
|
|
public static boolean isMacOS() {
|
|
return "mac".equals(id) || "darwin".equals(id);
|
|
}
|
|
|
|
public static boolean isLinux() {
|
|
return "linux".equals(id);
|
|
}
|
|
}
|