Skip to content

Commit 2a86a0c

Browse files
author
Vladislav Sumin
committed
add adb path resolution && logging
1 parent 8ed449d commit 2a86a0c

File tree

3 files changed

+30
-6
lines changed

3 files changed

+30
-6
lines changed

adb-server/adbserver-desktop/src/main/java/com/kaspersky/adbserver/desktop/AdbCommandPerformer.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import com.kaspersky.adbserver.common.api.CommandResult
44
import java.nio.file.Path
55

66
/**
7-
* @param adbPath - path to adb binary if null when used "adb" command
7+
* @param adbPath - path to adb binary
88
*/
99
class AdbCommandPerformer(
10-
private val adbPath: Path?,
10+
private val adbPath: Path,
1111
private val cmdCommandPerformer: CmdCommandPerformer,
1212
) {
1313

@@ -16,7 +16,6 @@ class AdbCommandPerformer(
1616
* @param command - adb command without path to adb binaries
1717
*/
1818
fun perform(command: String): CommandResult {
19-
val adbPath = adbPath?.toString() ?: "adb"
2019
return cmdCommandPerformer.perform("$adbPath $command")
2120
}
2221
}

adb-server/adbserver-desktop/src/main/java/com/kaspersky/adbserver/desktop/Main.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ import kotlinx.cli.ArgParser
66
import kotlinx.cli.ArgType
77
import kotlinx.cli.default
88
import kotlinx.cli.delimiter
9+
import java.io.File
910
import java.lang.management.ManagementFactory
1011
import java.nio.file.Path
12+
import kotlin.system.exitProcess
1113

1214
private const val DESKTOP = "Desktop-"
15+
private const val ERROR_EXIT_CODE = -1
1316

1417
internal fun main(args: Array<String>) {
1518
val parser = ArgParser("Adb Server")
@@ -35,7 +38,7 @@ internal fun main(args: Array<String>) {
3538
description = "Logs Level"
3639
).default(LogLevel.INFO)
3740

38-
val adbPath by parser.option(
41+
val adbPathFromArguments by parser.option(
3942
type = ArgType.String,
4043
fullName = "adbPath",
4144
description = "Path to adb binary, if not set when use 'adb' from process environment"
@@ -46,10 +49,17 @@ internal fun main(args: Array<String>) {
4649
val desktopName = getDesktopName()
4750
val desktopLogger = LoggerFactory.getDesktopLogger(logLevel, desktopName)
4851

49-
desktopLogger.i("Desktop started with arguments: emulators=$emulators, adbServerPort=$port")
52+
val adbPath = adbPathFromArguments?.let { Path.of(it) } ?: findAdbAtPath()
53+
54+
if (adbPath == null) {
55+
desktopLogger.e("Adb path not passed via arguments. Adb not found at path variable. Aborting...")
56+
exitProcess(ERROR_EXIT_CODE)
57+
}
58+
59+
desktopLogger.i("Desktop started with arguments: emulators=$emulators, adbServerPort=$port, adbPath=$adbPath")
5060

5161
val cmdCommandPerformer = CmdCommandPerformer(desktopName)
52-
val adbCommandPerformer = AdbCommandPerformer(adbPath?.let { Path.of(it) }, cmdCommandPerformer)
62+
val adbCommandPerformer = AdbCommandPerformer(adbPath, cmdCommandPerformer)
5363
val desktop = Desktop(
5464
cmdCommandPerformer = cmdCommandPerformer,
5565
adbCommandPerformer = adbCommandPerformer,
@@ -65,3 +75,15 @@ private fun getDesktopName(): String {
6575
val pid = processName.split("@".toRegex()).toTypedArray()[0].toLong()
6676
return DESKTOP + pid
6777
}
78+
79+
/**
80+
* Search for adb executable at environment PATH variable
81+
*/
82+
private fun findAdbAtPath(): Path? {
83+
return System.getenv("PATH")
84+
.split(":")
85+
.asSequence()
86+
.map { File(it) }
87+
.flatMap { it.listFiles()?.toList() ?: emptyList() }
88+
.firstOrNull { it.nameWithoutExtension == "adb" }?.toPath()
89+
}

kaspresso-plugin/src/main/kotlin/com/kaspersky/kaspresso/plugin/DesktopServerHolder.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ internal class DesktopServerHolder(private val logger: Logger) {
1818
@Synchronized
1919
fun start(workingDirectory: Path, adbPath: Path) {
2020
check(desktop == null) { "Desktop already started" }
21+
22+
logger.debug("Starting Desktop server. workingDir=$workingDirectory, adbPath=$adbPath")
23+
2124
val cmdCommandPerformer = CmdCommandPerformer(DESKTOP_NAME, workingDirectory)
2225
val adbCommandPerformer = AdbCommandPerformer(adbPath, cmdCommandPerformer)
2326
val logger = LoggerFactory.getDesktopLogger(LogLevel.VERBOSE, DESKTOP_NAME, GradleFullLogger(logger))

0 commit comments

Comments
 (0)