-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
Copy pathdeploy-controller.ts
44 lines (40 loc) · 1.23 KB
/
deploy-controller.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
import * as _ from "lodash";
import { injector } from "../common/yok";
export class DeployController {
constructor(
private $deviceInstallAppService: IDeviceInstallAppService,
private $devicesService: Mobile.IDevicesService,
private $prepareController: IPrepareController
) {}
public async deploy(data: IDeployData): Promise<void> {
const { deviceDescriptors } = data;
const executeAction = async (device: Mobile.IDevice) => {
const deviceDescriptor = _.find(
deviceDescriptors,
(dd) => dd.identifier === device.deviceInfo.identifier
);
const prepareData = {
...deviceDescriptor.buildData,
nativePrepare: {
skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
},
};
await this.$prepareController.prepare(prepareData);
await deviceDescriptor.buildAction();
await this.$deviceInstallAppService.installOnDevice(device, {
...deviceDescriptor.buildData,
buildForDevice: !device.isEmulator,
});
};
await this.$devicesService.execute(
executeAction,
(device: Mobile.IDevice) =>
_.some(
deviceDescriptors,
(deviceDescriptor) =>
deviceDescriptor.identifier === device.deviceInfo.identifier
)
);
}
}
injector.register("deployController", DeployController);