added 'add asset' GRM command

added 'add asset' GRM command
This commit is contained in:
Artur Stolear
2020-02-10 16:44:25 +02:00
parent 2d2a17becd
commit 7514ca5282
11 changed files with 227 additions and 1 deletions

View File

@@ -30,6 +30,11 @@ export enum PublishFields {
tagName = "tagName",
}
export enum AddAssetFields {
tagName = "tagName",
assets = "assets",
}
export interface GitReleaseManagerSettings {
[CommonFields.repository]: string;
[CommonFields.owner]: string;
@@ -60,4 +65,9 @@ export interface GitReleaseManagerOpenSettings extends GitReleaseManagerSettings
export interface GitReleaseManagerPublishSettings extends GitReleaseManagerSettings {
[PublishFields.tagName]: string;
}
export interface GitReleaseManagerAddAssetSettings extends GitReleaseManagerSettings {
[AddAssetFields.tagName]: string;
[AddAssetFields.assets]: string[];
}

View File

@@ -3,12 +3,14 @@ import {
GitReleaseManagerSettings,
CommonFields, CreateFields, DiscardFields,
CloseFields, OpenFields, PublishFields,
AddAssetFields,
GitReleaseManagerCreateSettings,
GitReleaseManagerDiscardSettings,
GitReleaseManagerCloseSettings,
GitReleaseManagerOpenSettings,
GitReleaseManagerPublishSettings,
GitReleaseManagerAddAssetSettings,
} from "./models";
export class Settings {
@@ -73,6 +75,18 @@ export class Settings {
}
}
public static getAddAssetSettings(buildAgent: IBuildAgent): GitReleaseManagerAddAssetSettings {
const tagName = buildAgent.getInput(AddAssetFields.tagName);
const assets = buildAgent.getListInput(AddAssetFields.assets);
const commonSettings = Settings.getCommonSettings(buildAgent);
return {
...commonSettings,
tagName,
assets
}
}
private static getCommonSettings(buildAgent: IBuildAgent): GitReleaseManagerSettings {
const owner = buildAgent.getInput(CommonFields.owner, true);
const repository = buildAgent.getInput(CommonFields.repository, true);

View File

@@ -12,6 +12,7 @@ import {
GitReleaseManagerCloseSettings,
GitReleaseManagerOpenSettings,
GitReleaseManagerPublishSettings,
GitReleaseManagerAddAssetSettings,
} from "./models";
export interface IGitReleaseManagerTool extends IDotnetTool {
@@ -21,6 +22,7 @@ export interface IGitReleaseManagerTool extends IDotnetTool {
close(settings: GitReleaseManagerCloseSettings): Promise<IExecResult>;
open(settings: GitReleaseManagerOpenSettings): Promise<IExecResult>;
publish(settings: GitReleaseManagerPublishSettings): Promise<IExecResult>;
addAsset(settings: GitReleaseManagerAddAssetSettings): Promise<IExecResult>;
}
@injectable()
@@ -67,6 +69,12 @@ export class GitReleaseManagerTool extends DotnetTool implements IGitReleaseMana
return this.execute("dotnet-gitreleasemanager", args);
}
public addAsset(settings: GitReleaseManagerAddAssetSettings): Promise<IExecResult> {
const args = this.getAddAssetArguments(settings);
return this.execute("dotnet-gitreleasemanager", args);
}
private getCommonArguments(settings: GitReleaseManagerSettings): string[] {
const args: string[] = [];
@@ -155,6 +163,23 @@ export class GitReleaseManagerTool extends DotnetTool implements IGitReleaseMana
return args;
}
private getAddAssetArguments(settings: GitReleaseManagerAddAssetSettings): string[] {
const args: string[] = ['addasset', ...this.getCommonArguments(settings)];
if (settings.tagName) {
args.push("--tagName", settings.tagName);
}
if (settings.assets && settings.assets.length > 0) {
settings.assets = settings.assets.map(asset => {
return path.join(settings.targetDirectory, asset)
})
args.push("--assets", settings.assets.join(","));
}
return args;
}
private getRepoDir(targetPath: string): string {
let workDir: string;
const srcDir = this.buildAgent.getSourceDir();