From c6de35b7b283d1693c314559effd177cb912862b Mon Sep 17 00:00:00 2001 From: pacien Date: Sun, 25 Feb 2018 01:42:27 +0100 Subject: Add log viewer --- .../main/java/org/pacien/tincapp/commands/Executor.kt | 18 +++++++++--------- app/src/main/java/org/pacien/tincapp/commands/Tinc.kt | 5 +++++ 2 files changed, 14 insertions(+), 9 deletions(-) (limited to 'app/src/main/java/org/pacien/tincapp/commands') diff --git a/app/src/main/java/org/pacien/tincapp/commands/Executor.kt b/app/src/main/java/org/pacien/tincapp/commands/Executor.kt index 39c413e..96e48b9 100644 --- a/app/src/main/java/org/pacien/tincapp/commands/Executor.kt +++ b/app/src/main/java/org/pacien/tincapp/commands/Executor.kt @@ -47,16 +47,16 @@ internal object Executor { } } - fun call(cmd: Command): CompletableFuture> { - val proc = try { - ProcessBuilder(cmd.asList()).start() - } catch (e: IOException) { - throw CommandExecutionException(e.message ?: "Could not start process.") - } + fun run(cmd: Command): Process = try { + ProcessBuilder(cmd.asList()).start() + } catch (e: IOException) { + throw CommandExecutionException(e.message ?: "Could not start process.") + } - return supplyAsyncTask> { - if (proc.waitFor() == 0) read(proc.inputStream) - else throw CommandExecutionException(read(proc.errorStream).lastOrNull() ?: "Non-zero exit status.") + fun call(cmd: Command): CompletableFuture> = run(cmd).let { process -> + supplyAsyncTask> { + if (process.waitFor() == 0) read(process.inputStream) + else throw CommandExecutionException(read(process.errorStream).lastOrNull() ?: "Non-zero exit status.") } } diff --git a/app/src/main/java/org/pacien/tincapp/commands/Tinc.kt b/app/src/main/java/org/pacien/tincapp/commands/Tinc.kt index 556288a..0f4c0a4 100644 --- a/app/src/main/java/org/pacien/tincapp/commands/Tinc.kt +++ b/app/src/main/java/org/pacien/tincapp/commands/Tinc.kt @@ -46,4 +46,9 @@ object Tinc { .withOption("config", AppPaths.confDir(netName).absolutePath) .withArguments("join", invitationUrl)) .thenApply { it.joinToString("\n") } + + fun log(netName: String, level: Int? = null): Process = + Executor.run(newCommand(netName) + .withArguments("log") + .apply { if (level != null) withArguments(level.toString()) }) } -- cgit v1.2.3