added GRM discard action
This commit is contained in:
4
src/tasks/gitreleasemanager/discard.ts
Normal file
4
src/tasks/gitreleasemanager/discard.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
import "reflect-metadata";
|
||||
import { discard } from "./main";
|
||||
|
||||
discard();
|
||||
@@ -38,4 +38,19 @@ export async function create() {
|
||||
} catch (error) {
|
||||
buildAgent.setFailed(error.message, true);
|
||||
}
|
||||
}
|
||||
|
||||
export async function discard() {
|
||||
try {
|
||||
|
||||
gitReleaseManagerTool.disableTelemetry();
|
||||
|
||||
const settings = Settings.getDiscardSettings(buildAgent);
|
||||
|
||||
await gitReleaseManagerTool.discard(settings);
|
||||
|
||||
buildAgent.setSucceeded("GitVersionManager discarded release successfully", true);
|
||||
} catch (error) {
|
||||
buildAgent.setFailed(error.message, true);
|
||||
}
|
||||
}
|
||||
@@ -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)];
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user