package org.rnorth.ansi;
import com.sun.jna.
Platform;
/**
* Simple terminal capability detection.
*/
public class
CapabilityDetection {
private static final int
STDOUT_FILENO = 1;
private
CapabilityDetection() {
// Utility class - don't allow construction;
}
public static boolean
isUnderIDEA() {
// Rough check for whether or not we're running in IDEA
String classPath =
System.
getProperty("java.class.path");
return
classPath.
contains("idea_rt.jar");
}
public static boolean
isUnderMaven() {
// Rough check for whether or not we're running in a Maven build
return
findClass("org.apache.maven.surefire.booter.ForkedBooter") ||
findClass("org.codehaus.plexus.classworlds.launcher.Launcher");
}
private static boolean
findClass(
String className) {
try {
Class.
forName(
className);
return true;
} catch (
Exception ignored) {
return false;
}
}
public static boolean
isTty() {
// Don't attempt to check on Windows
if (
Platform.
isWindows()) {
return false;
}
// Check native isatty using JNA. If we fail for any reason, assume no TTY and carry on.
try {
return
CLib.
INSTANCE.
isatty(
STDOUT_FILENO) != 0;
} catch (
Throwable ignored) {
return false;
}
}
}