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);