package org.korsakow.ide.util;
import java.util.Arrays;
import java.util.List;
public class Platform
{
public static enum Arch
{
X86("x86", Arrays.asList("x86","x86_64","i386")),
POWERPC("PowerPC", Arrays.asList("PowerPC", "ppc")),
UNKNOWN("unknown", Arrays.asList(""))
;
public static Arch findArch(String name)
{
for (Arch arch : values())
if (arch.isArch(name))
return arch;
return Arch.UNKNOWN;
}
private final String canonicalName;
private final List<String> aliases;
private Arch(String canonicalName, List<String> aliases)
{
this.canonicalName = canonicalName;
this.aliases = aliases;
}
public String getCanonicalName()
{
return canonicalName;
}
public boolean isArch(String name)
{
if (canonicalName.equalsIgnoreCase(name))
return true;
for (String alias : aliases)
if (alias.equalsIgnoreCase(name))
return true;
return false;
}
}
public static enum OS
{
MAC("mac"),
WIN("windows"),
NIX("linux"),
UNKNOWN("unknown")
;
private final String canonicalName;
private OS(String canonicalName)
{
this.canonicalName = canonicalName;
}
public String getCanonicalName()
{
return canonicalName;
}
public String getVersion()
{
return System.getProperty("os.version");
}
}
public static OS getOS()
{
if (isMacOS())
return OS.MAC;
if (isWindowsOS())
return OS.WIN;
if (isLinuxOS())
return OS.NIX;
return OS.UNKNOWN;
}
public static String getArchString() {
return System.getProperty("os.arch");
}
public static String getOSString() {
return System.getProperty("os.name") + " " + System.getProperty("os.version");
}
public static Arch getArch()
{
return Arch.findArch(System.getProperty("os.arch"));
}
public static boolean isLinuxOS()
{
final String osName = System.getProperty("os.name", "unknown").toLowerCase();
return osName.startsWith("linux");
}
public static boolean isWindowsOS()
{
final String osName = System.getProperty("os.name", "unknown").toLowerCase();
return osName.startsWith("windows");
}
public static boolean isMacOS()
{
final String osName = System.getProperty("os.name", "unknown").toLowerCase();
return osName.startsWith("mac") || osName.contains("darwin");
}
}