diff --git a/lib/definitions/project.d.ts b/lib/definitions/project.d.ts index b909839689..9c66577db6 100644 --- a/lib/definitions/project.d.ts +++ b/lib/definitions/project.d.ts @@ -436,16 +436,6 @@ interface IPlatformProjectService extends NodeJS.EventEmitter, IPlatformProjectS * Traverse through the production dependencies and find plugins that need build/rebuild */ checkIfPluginsNeedBuild(projectData: IProjectData): Promise>; - - /** - * Get gradle options the CLI generates when building project - */ - getBuildOptions(configurationFilePath?: string): Array; - - /** - * Get gradle options the CLI generates when building project - */ - executeCommand(projectRoot: string, args: any, childProcessOpts?: any, spawnFromEventOptions?: ISpawnFromEventOptions): Promise; } interface ITestExecutionService { diff --git a/lib/services/android-project-service.ts b/lib/services/android-project-service.ts index 66fd591179..b258745c83 100644 --- a/lib/services/android-project-service.ts +++ b/lib/services/android-project-service.ts @@ -308,15 +308,15 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject } public async buildProject(projectRoot: string, projectData: IProjectData, buildConfig: IBuildConfig): Promise { - const buildOptions = this.getGradleBuildOptions(buildConfig, projectData); + const gradleArgs = this.getGradleBuildOptions(buildConfig, projectData); if (this.$logger.getLevel() === "TRACE") { - buildOptions.unshift("--stacktrace"); - buildOptions.unshift("--debug"); + gradleArgs.unshift("--stacktrace"); + gradleArgs.unshift("--debug"); } if (buildConfig.release) { - buildOptions.unshift("assembleRelease"); + gradleArgs.unshift("assembleRelease"); } else { - buildOptions.unshift("assembleDebug"); + gradleArgs.unshift("assembleDebug"); } const handler = (data: any) => { @@ -326,10 +326,14 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject await attachAwaitDetach(constants.BUILD_OUTPUT_EVENT_NAME, this.$childProcess, handler, - this.executeCommand(this.getPlatformData(projectData).projectRoot, - buildOptions, - { stdio: buildConfig.buildOutputStdio || "inherit" }, - { emitOptions: { eventName: constants.BUILD_OUTPUT_EVENT_NAME }, throwError: true })); + this.executeCommand({ + projectRoot: this.getPlatformData(projectData).projectRoot, + gradleArgs, + childProcessOpts: { stdio: buildConfig.buildOutputStdio || "inherit" }, + spawnFromEventOptions: { emitOptions: { eventName: constants.BUILD_OUTPUT_EVENT_NAME }, throwError: true }, + message: "Gradle build..." + }) + ); } private getGradleBuildOptions(settings: IAndroidBuildOptionsSettings, projectData: IProjectData): Array { @@ -348,7 +352,7 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject return buildOptions; } - public getBuildOptions(configurationFilePath?: string): Array { + private getBuildOptions(configurationFilePath?: string): Array { this.$androidToolsInfo.validateInfo({ showWarningsAsErrors: true, validateTargetSdk: true }); const androidToolsInfo = this.$androidToolsInfo.getToolsInfo(); @@ -607,14 +611,23 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject } public stopServices(projectRoot: string): Promise { - return this.executeCommand(projectRoot, ["--stop", "--quiet"], {stdio: "pipe"}); + return this.executeCommand({ + projectRoot, + gradleArgs: ["--stop", "--quiet"], + childProcessOpts: { stdio: "pipe" }, + message: "Gradle stop services..." + }); } public async cleanProject(projectRoot: string, projectData: IProjectData): Promise { if (this.$androidToolsInfo.getToolsInfo().androidHomeEnvVar) { - const buildOptions = this.getGradleBuildOptions({ release: false }, projectData); - buildOptions.unshift("clean"); - await this.executeCommand(projectRoot, buildOptions); + const gradleArgs = this.getGradleBuildOptions({ release: false }, projectData); + gradleArgs.unshift("clean"); + await this.executeCommand({ + projectRoot, + gradleArgs, + message: "Gradle clean..." + }); } } @@ -676,16 +689,18 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject return versionInManifest; } - public async executeCommand(projectRoot: string, gradleArgs: any, childProcessOpts?: SpawnOptions, spawnFromEventOptions?: ISpawnFromEventOptions): Promise { + private async executeCommand(opts: { projectRoot: string, gradleArgs: any, childProcessOpts?: SpawnOptions, spawnFromEventOptions?: ISpawnFromEventOptions, message: string }): Promise { if (this.$androidToolsInfo.getToolsInfo().androidHomeEnvVar) { + const { projectRoot, gradleArgs, message, spawnFromEventOptions } = opts; const gradlew = this.$hostInfo.isWindows ? "gradlew.bat" : "./gradlew"; if (this.$logger.getLevel() === "INFO") { gradleArgs.push("--quiet"); - this.$logger.info("Gradle build..."); } - childProcessOpts = childProcessOpts || {}; + this.$logger.info(message); + + const childProcessOpts = opts.childProcessOpts || {}; childProcessOpts.cwd = childProcessOpts.cwd || projectRoot; childProcessOpts.stdio = childProcessOpts.stdio || "inherit"; diff --git a/lib/services/ios-project-service.ts b/lib/services/ios-project-service.ts index 59a11b60a5..06e886cb30 100644 --- a/lib/services/ios-project-service.ts +++ b/lib/services/ios-project-service.ts @@ -14,7 +14,6 @@ import { IOSProvisionService } from "./ios-provision-service"; import { IOSEntitlementsService } from "./ios-entitlements-service"; import { XCConfigService } from "./xcconfig-service"; import * as mobileprovision from "ios-mobileprovision-finder"; -import { SpawnOptions } from "child_process"; import { BUILD_XCCONFIG_FILE_NAME } from "../constants"; interface INativeSourceCodeGroup { @@ -126,10 +125,6 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ return true; } - public async executeCommand(projectRoot: string, args: any, childProcessOpts?: SpawnOptions, spawnFromEventOptions?: ISpawnFromEventOptions): Promise { - return { stderr: "", stdout: "", exitCode: 0 }; - } - public getAppResourcesDestinationDirectoryPath(projectData: IProjectData): string { const frameworkVersion = this.getFrameworkVersion(projectData); @@ -1039,10 +1034,6 @@ We will now place an empty obsolete compatability white screen LauncScreen.xib f return []; } - public getBuildOptions(configurationFilePath: string): Array { - return []; - } - private getAllLibsForPluginWithFileExtension(pluginData: IPluginData, fileExtension: string): string[] { const filterCallback = (fileName: string, pluginPlatformsFolderPath: string) => path.extname(fileName) === fileExtension; return this.getAllNativeLibrariesForPlugin(pluginData, IOSProjectService.IOS_PLATFORM_NAME, filterCallback); diff --git a/test/stubs.ts b/test/stubs.ts index 7ce0254f05..6448255adc 100644 --- a/test/stubs.ts +++ b/test/stubs.ts @@ -3,7 +3,6 @@ import * as util from "util"; import * as chai from "chai"; import { EventEmitter } from "events"; -import { SpawnOptions } from "child_process"; import * as path from "path"; import * as constants from "./../lib/constants"; import { Yok } from "./../lib/common/yok"; @@ -355,10 +354,6 @@ export class PlatformProjectServiceStub extends EventEmitter implements IPlatfor return Promise.resolve(); } - public async executeCommand(projectRoot: string, gradleArgs: string[], childProcessOpts?: SpawnOptions, spawnFromEventOptions?: ISpawnFromEventOptions): Promise { - return { stderr: "", stdout: "", exitCode: 0 }; - } - async buildProject(projectRoot: string): Promise { return Promise.resolve(); } @@ -380,10 +375,6 @@ export class PlatformProjectServiceStub extends EventEmitter implements IPlatfor return Promise.resolve(); } - getBuildOptions(configurationFilePath?: string): Array { - return []; - } - async removePluginNativeCode(pluginData: IPluginData): Promise { } async afterPrepareAllPlugins(): Promise {