added GRM discard action

This commit is contained in:
Artur Stolear
2020-02-08 21:29:49 +02:00
parent 0e2e93e6aa
commit 6cbe5073c3
12 changed files with 18618 additions and 3 deletions

View File

@@ -3,12 +3,18 @@ import path = require("path");
import { TYPES, IBuildAgent, IExecResult } from "../../core/models";
import { injectable, inject } from "inversify";
import { DotnetTool, IDotnetTool } from "../../core/dotnet-tool";
import { GitReleaseManagerCreateSettings, GitReleaseManagerSettings, CreateFields, CommonFields } from "./models";
import { IVersionManager } from "../../core/versionManager";
import {
GitReleaseManagerSettings,
GitReleaseManagerCreateSettings,
GitReleaseManagerDiscardSettings
} from "./models";
export interface IGitReleaseManagerTool extends IDotnetTool {
install(versionSpec: string, includePrerelease: boolean): Promise<void>;
create(settings: GitReleaseManagerCreateSettings): Promise<IExecResult>;
discard(settings: GitReleaseManagerDiscardSettings): Promise<IExecResult>;
}
@injectable()
@@ -31,6 +37,12 @@ export class GitReleaseManagerTool extends DotnetTool implements IGitReleaseMana
return this.execute("dotnet-gitreleasemanager", args);
}
public discard(settings: GitReleaseManagerDiscardSettings): Promise<IExecResult> {
const args = this.getDiscardArguments(settings);
return this.execute("dotnet-gitreleasemanager", args);
}
getCommonArguments(settings: GitReleaseManagerSettings): string[] {
const args: string[] = [];
@@ -41,6 +53,19 @@ export class GitReleaseManagerTool extends DotnetTool implements IGitReleaseMana
return args;
}
getDiscardArguments(settings: GitReleaseManagerDiscardSettings): string[] {
const args: string[] = ['discard', ...this.getCommonArguments(settings)];
if (settings.milestone) {
args.push("--milestone", settings.milestone);
}
if (settings.targetDirectory) {
args.push("--targetDirectory", settings.targetDirectory);
}
return args;
}
getCreateArguments(settings: GitReleaseManagerCreateSettings): string[] {
const args: string[] = ['create', ...this.getCommonArguments(settings)];

View File

@@ -14,6 +14,11 @@ export enum CreateFields {
assets = "assets",
}
export enum DiscardFields {
milestone = "milestone",
targetDirectory = "targetDirectory",
}
export interface GitReleaseManagerSettings {
[CommonFields.repository]: string;
[CommonFields.owner]: string;
@@ -28,4 +33,9 @@ export interface GitReleaseManagerCreateSettings extends GitReleaseManagerSettin
[CreateFields.commit]: string;
[CreateFields.targetDirectory]: string;
[CreateFields.assets]?: string[];
}
export interface GitReleaseManagerDiscardSettings extends GitReleaseManagerSettings {
[DiscardFields.milestone]: string;
[DiscardFields.targetDirectory]: string;
}

View File

@@ -1,5 +1,5 @@
import { IBuildAgent } from "../../core/models";
import { GitReleaseManagerSettings, CommonFields, CreateFields, GitReleaseManagerCreateSettings } from "./models";
import { GitReleaseManagerSettings, CommonFields, CreateFields, GitReleaseManagerCreateSettings, DiscardFields, GitReleaseManagerDiscardSettings } from "./models";
export class Settings {
@@ -25,6 +25,18 @@ export class Settings {
}
}
public static getDiscardSettings(buildAgent: IBuildAgent) : GitReleaseManagerDiscardSettings {
const milestone = buildAgent.getInput(DiscardFields.milestone);
const targetDirectory = buildAgent.getInput(CreateFields.targetDirectory);
const commonSettings = Settings.getCommonSettings(buildAgent);
return {
...commonSettings,
milestone,
targetDirectory,
}
}
private static getCommonSettings(buildAgent: IBuildAgent): GitReleaseManagerSettings {
const owner = buildAgent.getInput(CommonFields.owner, true);
const repository = buildAgent.getInput(CommonFields.repository, true);