gradle-build-action/src/execution.ts

43 lines
1.1 KiB
TypeScript
Raw Normal View History

2019-09-21 14:01:53 +00:00
import * as exec from "@actions/exec";
export async function execute(executable: string, root: string, argv: string[]): Promise<BuildResult> {
let publishing = false;
2019-09-23 10:11:18 +00:00
let buildScanUrl: string | undefined;
2019-09-21 14:01:53 +00:00
2019-09-23 10:11:18 +00:00
const status: number = await exec.exec(executable, argv, {
2019-09-21 14:01:53 +00:00
cwd: root,
2019-09-23 10:11:18 +00:00
ignoreReturnCode: true,
2019-09-21 14:01:53 +00:00
listeners: {
stdline: (line: string) => {
if (line.startsWith("Publishing build scan...")) {
publishing = true;
}
if (publishing && line.length == 0) {
publishing = false
}
if (publishing && line.startsWith("http")) {
2019-09-23 10:11:18 +00:00
buildScanUrl = line.trim();
2019-09-21 14:01:53 +00:00
publishing = false
}
}
}
});
2019-09-23 10:11:18 +00:00
return new BuildResultImpl(status, buildScanUrl);
2019-09-21 14:01:53 +00:00
}
export interface BuildResult {
2019-09-23 10:11:18 +00:00
readonly status: number
readonly buildScanUrl?: string
2019-09-21 14:01:53 +00:00
}
class BuildResultImpl implements BuildResult {
2019-09-23 10:11:18 +00:00
constructor(
readonly status: number,
readonly buildScanUrl?: string
) {
2019-09-21 14:01:53 +00:00
}
}