mirror of
https://github.com/corda/corda.git
synced 2025-06-18 23:28:21 +00:00
NodeRunner: fix OSX script. Add a delay before starting the next node. (#419)
* NodeRunner: fix OSX script. Add a delay before starting the next node. * Only add delay on macOS
This commit is contained in:
@ -10,6 +10,15 @@ private val nodeJarName = "corda.jar"
|
|||||||
private val webJarName = "corda-webserver.jar"
|
private val webJarName = "corda-webserver.jar"
|
||||||
private val nodeConfName = "node.conf"
|
private val nodeConfName = "node.conf"
|
||||||
|
|
||||||
|
private val os: OS by lazy {
|
||||||
|
val osName = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH)
|
||||||
|
if ((osName.indexOf("mac") >= 0) || (osName.indexOf("darwin") >= 0)) OS.MACOS
|
||||||
|
else if (osName.indexOf("win") >= 0) OS.WINDOWS
|
||||||
|
else OS.LINUX
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum class OS { MACOS, WINDOWS, LINUX }
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
val startedProcesses = mutableListOf<Process>()
|
val startedProcesses = mutableListOf<Process>()
|
||||||
val headless = (GraphicsEnvironment.isHeadless() || (!args.isEmpty() && (args[0] == "--headless")))
|
val headless = (GraphicsEnvironment.isHeadless() || (!args.isEmpty() && (args[0] == "--headless")))
|
||||||
@ -22,11 +31,13 @@ fun main(args: Array<String>) {
|
|||||||
if (isNode(it)) {
|
if (isNode(it)) {
|
||||||
println("Starting node in $it")
|
println("Starting node in $it")
|
||||||
startedProcesses.add(runJar(nodeJarName, it, javaArgs))
|
startedProcesses.add(runJar(nodeJarName, it, javaArgs))
|
||||||
|
if (os == OS.MACOS) Thread.sleep(1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isWebserver(it)) {
|
if (isWebserver(it)) {
|
||||||
println("Starting webserver in $it")
|
println("Starting webserver in $it")
|
||||||
startedProcesses.add(runJar(webJarName, it, javaArgs))
|
startedProcesses.add(runJar(webJarName, it, javaArgs))
|
||||||
|
if (os == OS.MACOS) Thread.sleep(1000)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,30 +72,31 @@ private fun execJarInTerminalWindow(jarName: String, dir: File, args: List<Strin
|
|||||||
val javaCmd = "java -jar $jarName " + args.joinToString(" ") { it }
|
val javaCmd = "java -jar $jarName " + args.joinToString(" ") { it }
|
||||||
val nodeName = "${dir.toPath().fileName} $jarName"
|
val nodeName = "${dir.toPath().fileName} $jarName"
|
||||||
val osName = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH)
|
val osName = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH)
|
||||||
val builder = if ((osName.indexOf("mac") >= 0) || (osName.indexOf("darwin") >= 0)) {
|
val builder = when (os) {
|
||||||
ProcessBuilder(
|
OS.MACOS -> ProcessBuilder(
|
||||||
"osascript", "-e",
|
"osascript", "-e",
|
||||||
"""tell app "Terminal
|
"""tell app "Terminal"
|
||||||
activate
|
activate
|
||||||
tell application \"System Events\" to tell process \"Terminal\" to keystroke \"t\" using command down
|
tell app "System Events" to tell process "Terminal" to keystroke "t" using command down
|
||||||
delay 0.5
|
delay 0.5
|
||||||
do script "bash -c 'cd $dir; /usr/libexec/java_home -v 1.8 --exec $javaCmd && exit'" in window 1"""
|
do script "bash -c 'cd $dir; /usr/libexec/java_home -v 1.8 --exec $javaCmd && exit'" in selected tab of the front window
|
||||||
|
end tell"""
|
||||||
)
|
)
|
||||||
} else if (osName.indexOf("win") >= 0) {
|
OS.WINDOWS -> ProcessBuilder(
|
||||||
ProcessBuilder(
|
"cmd"
|
||||||
"cmd", "/C", "start $javaCmd"
|
, "/C", "start $javaCmd"
|
||||||
)
|
)
|
||||||
} else {
|
OS.LINUX -> {
|
||||||
// Assume Linux
|
val isTmux = System.getenv("TMUX")?.isNotEmpty() ?: false
|
||||||
val isTmux = System.getenv("TMUX")?.isNotEmpty() ?: false
|
if (isTmux) {
|
||||||
if (isTmux) {
|
ProcessBuilder(
|
||||||
ProcessBuilder(
|
"tmux", "new-window", "-n", nodeName, javaCmd
|
||||||
"tmux", "new-window", "-n", nodeName, javaCmd
|
)
|
||||||
)
|
} else {
|
||||||
} else {
|
ProcessBuilder(
|
||||||
ProcessBuilder(
|
"xterm", "-T", nodeName, "-e", javaCmd
|
||||||
"xterm", "-T", nodeName, "-e", javaCmd
|
)
|
||||||
)
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return builder.directory(dir).start()
|
return builder.directory(dir).start()
|
||||||
|
Reference in New Issue
Block a user