-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathShellCommand+Adb.swift
More file actions
63 lines (51 loc) · 1.63 KB
/
ShellCommand+Adb.swift
File metadata and controls
63 lines (51 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//
// ShellCommand+Adb.swift
// AndroidDeviceKit
//
// Created by Lukas Romsicki on 2022-10-24.
// Copyright © 2022 Shopify. All rights reserved.
//
import Foundation
import ShellKit
extension ShellCommand where Self == AdbCommand {
static func adb(_ command: Self) -> Self {
command
}
}
enum AdbCommand {
case devices
case install(serial: String, apkUrl: URL)
case launch(serial: String, componentName: String, arguments: [String])
case avdName(serial: String)
case getProp(serial: String, property: String)
case waitForDevice(serial: String)
case resolveActivity(serial: String, packageName: String)
}
extension AdbCommand: ShellCommand {
var executable: Executable {
.url(PathResolver.adb)
}
var arguments: [String] {
switch self {
case .devices:
return ["devices", "-l"]
case .install(let serial, let apkUrl):
return ["-s", serial, "install", "-r", "-d", apkUrl.path(percentEncoded: false).wrappedInQuotationMarks()]
case .launch(let serial, let componentName, let arguments):
let extras: [String] = if !arguments.isEmpty {
["--esa", "TOPHAT_ARGUMENTS", arguments.joined(separator: ",")]
} else {
[]
}
return ["-s", serial, "shell", "am", "start", "-n", componentName] + extras
case .avdName(let serial):
return ["-s", serial, "emu", "avd", "name"]
case .getProp(let serial, let property):
return ["-s", serial, "shell", "getprop", property]
case .waitForDevice(let serial):
return ["-s", serial, "wait-for-device"]
case .resolveActivity(let serial, let packageName):
return ["-s", serial, "shell", "pm", "resolve-activity", "--brief", packageName]
}
}
}