move to webpack

This commit is contained in:
Artur Stolear
2020-01-15 17:06:32 +02:00
parent f09d4de93d
commit 019e954030
39 changed files with 80567 additions and 87108 deletions

View File

@@ -0,0 +1,99 @@
import { injectable } from "inversify";
import * as taskLib from "azure-pipelines-task-lib/task";
import * as toolLib from "azure-pipelines-tool-lib/tool";
import { IBuildAgent, IExecResult } from "../../core/interfaces";
@injectable()
class BuildAgent implements IBuildAgent {
public get agentName(): string {
return "Azure Pipelines";
}
public find(toolName: string, versionSpec: string, arch?: string): string {
return toolLib.findLocalTool(toolName, versionSpec, arch);
}
public cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string> {
return toolLib.cacheDir(sourceDir, tool, version, arch);
}
public createTempDir(): Promise<string> {
return Promise.resolve(taskLib.getVariable("Agent.TempDirectory"));
}
public debug(message: string): void {
taskLib.debug(message);
}
public setFailed(message: string, done?: boolean): void {
taskLib.setResult(taskLib.TaskResult.Failed, message, done);
}
public setSucceeded(message: string, done?: boolean): void {
taskLib.setResult(taskLib.TaskResult.Succeeded, message, done);
}
public exportVariable(name: string, val: string): void {
taskLib.setVariable(name, val);
}
public getVariable(name: string): string {
return taskLib.getVariable(name);
}
public addPath(inputPath: string): void {
toolLib.prependPath(inputPath);
}
public which(tool: string, check?: boolean): Promise<string> {
return Promise.resolve(taskLib.which(tool, check));
}
public exec(exec: string, args: string[]): Promise<IExecResult> {
const tr = taskLib.tool(exec);
tr.arg(args);
const result = tr.execSync();
return Promise.resolve({
code: result.code,
error: result.error,
stderr: result.stderr,
stdout: result.stdout,
});
}
public getSourceDir(): string {
return this.getVariable("Build.SourcesDirectory");
}
public setOutput(name: string, value: string): void {
taskLib.setVariable(name, value);
}
public getInput(input: string, required?: boolean): string {
return taskLib.getInput(input, required);
}
public getBooleanInput(input: string, required?: boolean): boolean {
return taskLib.getBoolInput(input, required);
}
public isValidInputFile(input: string, file: string): boolean {
return taskLib.filePathSupplied(input) && this.fileExists(file);
}
public fileExists(file: string): boolean {
return taskLib.exist(file) && taskLib.stats(file).isFile();
}
public directoryExists(file: string): boolean {
return taskLib.exist(file) && taskLib.stats(file).isDirectory();
}
}
export {
BuildAgent,
};

View File

@@ -0,0 +1,160 @@
import * as fs from "fs";
import * as path from "path";
import uuidv4 from "uuid";
import * as core from "@actions/core";
import * as exe from "@actions/exec";
import * as io from "@actions/io";
import * as toolCache from "@actions/tool-cache";
import { injectable } from "inversify";
import { IBuildAgent, IExecResult } from "../../core/interfaces";
@injectable()
class BuildAgent implements IBuildAgent {
public get agentName(): string {
return "GitHub Actions";
}
public find(toolName: string, versionSpec: string, arch?: string): string {
return toolCache.find(toolName, versionSpec, arch);
}
public cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string> {
return toolCache.cacheDir(sourceDir, tool, version, arch);
}
public async createTempDir(): Promise<string> {
const IS_WINDOWS = process.platform === "win32";
let tempDirectory: string = process.env.RUNNER_TEMP || "";
if (!tempDirectory) {
let baseLocation: string;
if (IS_WINDOWS) {
// On Windows use the USERPROFILE env variable
baseLocation = process.env.USERPROFILE || "C:\\";
} else {
if (process.platform === "darwin") {
baseLocation = "/Users";
} else {
baseLocation = "/home";
}
}
tempDirectory = path.join(baseLocation, "actions", "temp");
}
const dest = path.join(tempDirectory, uuidv4());
await io.mkdirP(dest);
return dest;
}
public debug(message: string): void {
core.debug(message);
}
public setFailed(message: string, done?: boolean): void {
core.setFailed(message);
}
public setSucceeded(message: string, done?: boolean): void {
//
}
public exportVariable(name: string, val: string): void {
core.exportVariable(name, val);
}
public getVariable(name: string): string {
return process.env[name];
}
public addPath(inputPath: string): void {
core.addPath(inputPath);
}
public which(tool: string, check?: boolean): Promise<string> {
return io.which(tool, check);
}
public async exec(exec: string, args: string[]): Promise<IExecResult> {
const dotnetPath = await io.which(exec, true);
let resultCode = 0;
let stdout = "";
let stderr = "";
resultCode = await exe.exec(
`"${dotnetPath}"`,
args,
{
listeners: {
stderr: (data: Buffer) => {
stderr += data.toString();
},
stdout: (data: Buffer) => {
stdout += data.toString();
},
},
});
return {
code: resultCode,
error: null,
stderr,
stdout,
};
}
public getSourceDir(): string {
return this.getVariable("GITHUB_WORKSPACE");
}
public setOutput(name: string, value: string): void {
core.setOutput(name, value);
}
public getInput(input: string, required?: boolean): string {
return core.getInput(input, { required } as core.InputOptions);
}
public getBooleanInput(input: string, required?: boolean): boolean {
const inputValue = this.getInput(input, required);
return (inputValue || "false").toLowerCase() === "true";
}
public isValidInputFile(input: string, file: string): boolean {
const pathValue = path.resolve(this.getInput(input) || "");
const repoRoot = this.getSourceDir();
return pathValue !== repoRoot;
}
public fileExists(file: string): boolean {
return this._exist(file) && this._stats(file).isFile();
}
public directoryExists(file: string): boolean {
return this._exist(file) && this._stats(file).isDirectory();
}
private _exist(file: string): boolean {
let exist = false;
try {
exist = !!(file && fs.statSync(file) != null);
} catch (err) {
if (err && err.code === "ENOENT") {
exist = false;
} else {
throw err;
}
}
return exist;
}
private _stats(file: string): fs.Stats {
return fs.statSync(file);
}
}
export {
BuildAgent,
};

View File

@@ -0,0 +1,104 @@
import { injectable } from "inversify";
import { IBuildAgent, IExecResult } from "../../core/interfaces";
@injectable()
class BuildAgent implements IBuildAgent {
public get agentName(): string {
console.log("getAgentName");
return "Mock";
}
public find(toolName: string, versionSpec: string, arch?: string): string {
console.log("find");
return "find";
}
public cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string> {
console.log("cacheDir");
return Promise.resolve("cacheDir");
}
public createTempDir(): Promise<string> {
console.log("createTempDir");
return Promise.resolve("createTempDir");
}
public debug(message: string): void {
console.log("debug");
}
public setFailed(message: string, done?: boolean): void {
console.log("setFailed");
}
public setSucceeded(message: string, done?: boolean): void {
console.log("setSucceeded");
}
public exportVariable(name: string, val: string): void {
console.log("exportVariable");
}
public getVariable(name: string): string {
console.log("getVariable");
return "getVariable";
}
public addPath(inputPath: string): void {
console.log("addPath");
}
public which(tool: string, check?: boolean): Promise<string> {
console.log("which");
return Promise.resolve("which");
}
public exec(exec: string, args: string[]): Promise<IExecResult> {
return Promise.resolve({
code: 0,
error: null,
stderr: "result.stderr",
stdout: "result.stdout",
});
}
public getSourceDir(): string {
console.log("getSourceDir");
return "getSourceDir";
}
public setOutput(name: string, value: string): void {
console.log("setOutput");
}
public getInput(input: string, required?: boolean): string {
console.log("getInput");
return "getInput";
}
public getBooleanInput(input: string, required?: boolean): boolean {
console.log("getBooleanInput");
return false;
}
public isValidInputFile(input: string, file: string) {
console.log("isValidInputFile");
return false;
}
public fileExists(file: string) {
console.log("fileExists");
return false;
}
public directoryExists(file: string) {
console.log("directoryExists");
return false;
}
}
export {
BuildAgent,
};