Add payload support
Signed-off-by: Sanjula Ganepola <sanjulagane@gmail.com>
This commit is contained in:
33
src/views/settings/payloads.ts
Normal file
33
src/views/settings/payloads.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode";
|
||||
import { act } from "../../extension";
|
||||
import { SettingFile } from "../../settingsManager";
|
||||
import { StorageKey } from "../../storageManager";
|
||||
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
|
||||
import SettingFileTreeItem from "./settingFile";
|
||||
|
||||
export default class PayloadsTreeItem extends TreeItem implements GithubLocalActionsTreeItem {
|
||||
static contextValue = 'githubLocalActions.payloads';
|
||||
storageKey = StorageKey.PayloadFiles;
|
||||
|
||||
constructor(public workspaceFolder: WorkspaceFolder, payloadFiles: SettingFile[]) {
|
||||
super('Payloads', TreeItemCollapsibleState.Collapsed);
|
||||
const selectedPayloadFiles = payloadFiles.filter(payloadFile => payloadFile.selected);
|
||||
this.description = selectedPayloadFiles.length > 0 ? `${selectedPayloadFiles[0].name}` : ``;
|
||||
this.contextValue = PayloadsTreeItem.contextValue;
|
||||
this.iconPath = new ThemeIcon('json');
|
||||
}
|
||||
|
||||
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {
|
||||
const items: GithubLocalActionsTreeItem[] = [];
|
||||
|
||||
const settings = await act.settingsManager.getSettings(this.workspaceFolder, false);
|
||||
|
||||
const payloadFileTreeItems: GithubLocalActionsTreeItem[] = [];
|
||||
for (const payloadFile of settings.payloadFiles) {
|
||||
payloadFileTreeItems.push(SettingFileTreeItem.getPayloadTreeItem(this.workspaceFolder, payloadFile));
|
||||
}
|
||||
items.push(...payloadFileTreeItems.sort((a, b) => a.label!.toString().localeCompare(b.label!.toString())));
|
||||
|
||||
return items;
|
||||
}
|
||||
}
|
||||
@@ -55,6 +55,18 @@ export default class SettingFileTreeItem extends TreeItem implements GithubLocal
|
||||
);
|
||||
}
|
||||
|
||||
static getPayloadTreeItem(workspaceFolder: WorkspaceFolder, payloadFile: SettingFile): SettingFileTreeItem {
|
||||
return new SettingFileTreeItem(
|
||||
workspaceFolder,
|
||||
payloadFile,
|
||||
StorageKey.PayloadFiles,
|
||||
{
|
||||
contextValue: 'githubLocalActions.payloadFile',
|
||||
iconPath: new ThemeIcon('file')
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import { SettingFileName, Visibility } from "../../settingsManager";
|
||||
import { StorageKey } from "../../storageManager";
|
||||
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
|
||||
import InputsTreeItem from "./inputs";
|
||||
import PayloadsTreeItem from "./payloads";
|
||||
import SecretsTreeItem from "./secrets";
|
||||
import SettingTreeItem from "./setting";
|
||||
import SettingFileTreeItem from "./settingFile";
|
||||
@@ -98,6 +99,32 @@ export default class SettingsTreeDataProvider implements TreeDataProvider<Github
|
||||
this.refresh();
|
||||
}
|
||||
}),
|
||||
commands.registerCommand('githubLocalActions.createPayloadFile', async (payloadsTreeItem: PayloadsTreeItem) => {
|
||||
const payloadFileName = await window.showInputBox({
|
||||
prompt: `Enter the name for the payload file`,
|
||||
placeHolder: `Payload File Name`,
|
||||
value: SettingFileName.payloadFile
|
||||
});
|
||||
|
||||
if (payloadFileName) {
|
||||
await act.settingsManager.createSettingFile(payloadsTreeItem.workspaceFolder, payloadsTreeItem.storageKey, payloadFileName);
|
||||
this.refresh();
|
||||
}
|
||||
}),
|
||||
commands.registerCommand('githubLocalActions.locatePayloadFiles', async (payloadsTreeItem: PayloadsTreeItem) => {
|
||||
const payloadFilesUris = await window.showOpenDialog({
|
||||
title: 'Locate Payload Files',
|
||||
canSelectFiles: true,
|
||||
canSelectFolders: false,
|
||||
canSelectMany: true,
|
||||
defaultUri: payloadsTreeItem.workspaceFolder.uri
|
||||
});
|
||||
|
||||
if (payloadFilesUris) {
|
||||
await act.settingsManager.locateSettingFile(payloadsTreeItem.workspaceFolder, payloadsTreeItem.storageKey, payloadFilesUris);
|
||||
this.refresh();
|
||||
}
|
||||
}),
|
||||
commands.registerCommand('githubLocalActions.openSettingFile', async (settingFileTreeItem: SettingFileTreeItem) => {
|
||||
const document = await workspace.openTextDocument(settingFileTreeItem.settingFile.path);
|
||||
await window.showTextDocument(document);
|
||||
|
||||
@@ -2,6 +2,7 @@ import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "
|
||||
import { act } from "../../extension";
|
||||
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
|
||||
import InputsTreeItem from "./inputs";
|
||||
import PayloadsTreeItem from "./payloads";
|
||||
import RunnersTreeItem from "./runners";
|
||||
import SecretsTreeItem from "./secrets";
|
||||
import VariablesTreeItem from "./variables";
|
||||
@@ -23,7 +24,8 @@ export default class WorkspaceFolderSettingsTreeItem extends TreeItem implements
|
||||
new SecretsTreeItem(this.workspaceFolder, settings.secrets, settings.secretFiles),
|
||||
new VariablesTreeItem(this.workspaceFolder, settings.variables, settings.variableFiles),
|
||||
new InputsTreeItem(this.workspaceFolder, settings.inputs, settings.inputFiles),
|
||||
new RunnersTreeItem(this.workspaceFolder, settings.runners)
|
||||
new RunnersTreeItem(this.workspaceFolder, settings.runners),
|
||||
new PayloadsTreeItem(this.workspaceFolder, settings.payloadFiles)
|
||||
]);
|
||||
|
||||
return items;
|
||||
|
||||
Reference in New Issue
Block a user