Add actions to add and open secret, variable, and input files

Signed-off-by: Sanjula Ganepola <sanjulagane@gmail.com>
This commit is contained in:
Sanjula Ganepola
2024-11-21 21:48:27 -05:00
parent 67ac9f72e7
commit 049b6bdc8f
12 changed files with 325 additions and 44 deletions

View File

@@ -4,6 +4,17 @@ import { GitHubManager } from "./githubManager";
import { SecretManager } from "./secretManager";
import { StorageKey, StorageManager } from "./storageManager";
export interface Settings {
secrets: Setting[];
secretFiles: SettingFile[];
variables: Setting[];
variableFiles: SettingFile[];
inputs: Setting[];
inputFiles: SettingFile[];
runners: Setting[];
environments: Setting[];
}
export interface Setting {
key: string,
value: string,
@@ -12,6 +23,12 @@ export interface Setting {
visible: Visibility
}
export interface SettingFile {
name: string,
path: string,
selected: boolean
}
export enum Visibility {
show = 'show',
hide = 'hide'
@@ -32,17 +49,23 @@ export class SettingsManager {
this.githubManager = new GitHubManager();
}
async getSettings(workspaceFolder: WorkspaceFolder, isUserSelected: boolean) {
async getSettings(workspaceFolder: WorkspaceFolder, isUserSelected: boolean): Promise<Settings> {
const secrets = (await this.getSetting(workspaceFolder, SettingsManager.secretsRegExp, StorageKey.Secrets, true, Visibility.hide)).filter(secret => !isUserSelected || secret.selected);
const secretFiles = await this.getSettingFiles(workspaceFolder, StorageKey.SecretFiles);
const variables = (await this.getSetting(workspaceFolder, SettingsManager.variablesRegExp, StorageKey.Variables, false, Visibility.show)).filter(variable => !isUserSelected || variable.selected);
const variableFiles = await this.getSettingFiles(workspaceFolder, StorageKey.VariableFiles);
const inputs = (await this.getSetting(workspaceFolder, SettingsManager.inputsRegExp, StorageKey.Inputs, false, Visibility.show)).filter(input => !isUserSelected || (input.selected && input.value));
const inputFiles = await this.getSettingFiles(workspaceFolder, StorageKey.InputFiles);
const runners = (await this.getSetting(workspaceFolder, SettingsManager.runnersRegExp, StorageKey.Runners, false, Visibility.show)).filter(runner => !isUserSelected || (runner.selected && runner.value));
const environments = await this.getEnvironments(workspaceFolder);
return {
secrets: secrets,
secretFiles: secretFiles,
variables: variables,
variableFiles: variableFiles,
inputs: inputs,
inputFiles: inputFiles,
runners: runners,
environments: environments
};
@@ -94,6 +117,11 @@ export class SettingsManager {
return settings;
}
async getSettingFiles(workspaceFolder: WorkspaceFolder, storageKey: StorageKey): Promise<SettingFile[]> {
const existingSettingFiles = this.storageManager.get<{ [path: string]: SettingFile[] }>(storageKey) || {};
return existingSettingFiles[workspaceFolder.uri.fsPath] || [];
}
async getEnvironments(workspaceFolder: WorkspaceFolder): Promise<Setting[]> {
const environments: Setting[] = [];
@@ -125,6 +153,22 @@ export class SettingsManager {
return environments;
}
async editSettingFile(workspaceFolder: WorkspaceFolder, newSettingFile: SettingFile, storageKey: StorageKey) {
const existingSettingFiles = this.storageManager.get<{ [path: string]: SettingFile[] }>(storageKey) || {};
if (existingSettingFiles[workspaceFolder.uri.fsPath]) {
const index = existingSettingFiles[workspaceFolder.uri.fsPath].findIndex(settingFile => settingFile.path === newSettingFile.path);
if (index > -1) {
existingSettingFiles[workspaceFolder.uri.fsPath][index] = newSettingFile;
} else {
existingSettingFiles[workspaceFolder.uri.fsPath].push(newSettingFile);
}
} else {
existingSettingFiles[workspaceFolder.uri.fsPath] = [newSettingFile];
}
await this.storageManager.update(storageKey, existingSettingFiles);
}
async editSetting(workspaceFolder: WorkspaceFolder, newSetting: Setting, storageKey: StorageKey) {
const value = newSetting.value;
if (storageKey === StorageKey.Secrets) {