-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
Copy pathdeploy-command-helper.ts
56 lines (47 loc) · 2.23 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
import { DeployController } from "../controllers/deploy-controller";
import { BuildController } from "../controllers/build-controller";
export class DeployCommandHelper {
constructor(
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, buildForDevice: !d.isEmulator, skipWatcher: !this.$options.watch });
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);