Slackbot
11/28/2023, 11:07 PMChris Lee
11/28/2023, 11:17 PM/**
* Represents an Operating System for the purposes of build script usage.
*/
sealed class Os(private val name: String) {
companion object {
val current by lazy {
val osName = SystemProperty.OsName.requiredValue.lowercase()
when {
osName.contains("windows") -> Windows
osName.contains("mac os x") || osName.contains("darwin") || osName.contains("osx") -> Unix.MacOs
osName.contains("linux") -> Unix.Linux
else -> error("Unknown operating system: $osName")
}
}
}
object Predicates {
val Unix : (Os) -> Boolean = { os -> os is Unix }
val Windows : (Os) -> Boolean = { os -> os is Windows }
}
open val pathSeparator = ":"
open val executableExtension = ""
override fun toString(): String {
return "Os(name='$name')"
}
data object Windows : Os("Windows") {
override val executableExtension = ".exe"
override val pathSeparator = ";"
}
sealed class Unix(name : String) : Os(name) {
data object Linux : Unix("Linux")
data object MacOs : Unix("MacOS")
}
}ephemient
11/28/2023, 11:21 PMVampire
11/28/2023, 11:24 PMVampire
11/28/2023, 11:24 PMimport org.apache.tools.ant.taskdefs.condition.Os
Os.isFamily(Os.FAMILY_WINDOWS)
...Eli Graber
11/28/2023, 11:26 PMOs. Putting in the FQN worked though. Thanks!Vampire
11/28/2023, 11:28 PMEli Graber
11/28/2023, 11:29 PM