-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
Copy pathdeploy-command-helper.ts
96 lines (87 loc) · 2.88 KB
/
deploy-command-helper.ts
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import { DeployController } from "../controllers/deploy-controller";
import { BuildController } from "../controllers/build-controller";
import { IAndroidBundleValidatorHelper, IOptions } from "../declarations";
import { IBuildDataService } from "../definitions/build";
import { IProjectData } from "../definitions/project";
import { injector } from "../common/yok";
export class DeployCommandHelper {
constructor(
private $androidBundleValidatorHelper: IAndroidBundleValidatorHelper,
private $buildDataService: IBuildDataService,
private $buildController: BuildController,
private $devicesService: Mobile.IDevicesService,
private $deployController: DeployController,
private $options: IOptions,
private $projectData: IProjectData
) {}
public async deploy(
platform: string,
additionalOptions?: ILiveSyncCommandHelperAdditionalOptions
) {
const emulator = this.$options.emulator;
await this.$devicesService.initialize({
deviceId: this.$options.device,
platform,
emulator,
skipInferPlatform: !platform,
sdk: this.$options.sdk,
});
const devices = this.$devicesService
.getDeviceInstances()
.filter(
(d) =>
!platform ||
d.deviceInfo.platform.toLowerCase() === platform.toLowerCase()
);
const deviceDescriptors: ILiveSyncDeviceDescriptor[] = devices.map((d) => {
const outputPath =
additionalOptions &&
additionalOptions.getOutputDirectory &&
additionalOptions.getOutputDirectory({
platform: d.deviceInfo.platform,
emulator: d.isEmulator,
projectDir: this.$projectData.projectDir,
});
const buildData = this.$buildDataService.getBuildData(
this.$projectData.projectDir,
d.deviceInfo.platform,
{
...this.$options.argv,
outputPath,
buildFilterDevicesArch: false,
buildForDevice: !d.isEmulator,
skipWatcher: !this.$options.watch,
nativePrepare: {
skipNativePrepare:
additionalOptions && additionalOptions.skipNativePrepare,
},
}
);
this.$androidBundleValidatorHelper.validateDeviceApiLevel(d, buildData);
const buildAction =
additionalOptions && additionalOptions.buildPlatform
? additionalOptions.buildPlatform.bind(
additionalOptions.buildPlatform,
d.deviceInfo.platform,
buildData,
this.$projectData
)
: this.$buildController.build.bind(this.$buildController, buildData);
const info: ILiveSyncDeviceDescriptor = {
identifier: d.deviceInfo.identifier,
buildAction,
debuggingEnabled:
additionalOptions &&
additionalOptions.deviceDebugMap &&
additionalOptions.deviceDebugMap[d.deviceInfo.identifier],
debugOptions: this.$options,
skipNativePrepare:
additionalOptions && additionalOptions.skipNativePrepare,
buildData,
};
return info;
});
await this.$deployController.deploy({ deviceDescriptors });
}
}
injector.register("deployCommandHelper", DeployCommandHelper);