-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
Copy pathgradle-build-service.ts
30 lines (26 loc) · 1.46 KB
/
gradle-build-service.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
import { attachAwaitDetach } from "../../common/helpers";
import * as constants from "../../constants";
import { EventEmitter } from "events";
export class GradleBuildService extends EventEmitter implements IGradleBuildService {
constructor(
private $childProcess: IChildProcess,
private $gradleBuildArgsService: IGradleBuildArgsService,
private $gradleCommandService: IGradleCommandService,
) { super(); }
public async buildProject(projectRoot: string, buildData: IAndroidBuildData): Promise<void> {
const buildTaskArgs = await this.$gradleBuildArgsService.getBuildTaskArgs(buildData);
const spawnOptions = { emitOptions: { eventName: constants.BUILD_OUTPUT_EVENT_NAME }, throwError: true };
const gradleCommandOptions = { cwd: projectRoot, message: "Gradle build...", stdio: buildData.buildOutputStdio, spawnOptions };
await attachAwaitDetach(constants.BUILD_OUTPUT_EVENT_NAME,
this.$childProcess,
(data: any) => this.emit(constants.BUILD_OUTPUT_EVENT_NAME, data),
this.$gradleCommandService.executeCommand(buildTaskArgs, gradleCommandOptions)
);
}
public async cleanProject(projectRoot: string, buildData: IAndroidBuildData): Promise<void> {
const cleanTaskArgs = this.$gradleBuildArgsService.getCleanTaskArgs(buildData);
const gradleCommandOptions = { cwd: projectRoot, message: "Gradle clean..." };
await this.$gradleCommandService.executeCommand(cleanTaskArgs, gradleCommandOptions);
}
}
$injector.register("gradleBuildService", GradleBuildService);