Refactor to use workspace folders

Signed-off-by: Sanjula Ganepola <sanjulagane@gmail.com>
This commit is contained in:
Sanjula Ganepola
2024-10-19 20:20:48 -04:00
parent f4a73316f4
commit 49e934e297
26 changed files with 515 additions and 206 deletions

View File

@@ -1,25 +1,77 @@
import { WorkspaceFolder } from "vscode";
import { Workflow } from "./workflowsManager";
export interface Settings {
environments: Environment[],
secrets: Secret[],
variables: Variable[],
inputs: Input[],
runners: Runner[],
containerEngines: ContainerEngine[]
}
export interface Environment {
name: string
}
export interface Secret {
key: string,
value?: string
value: string,
selected: boolean
}
export interface Variable {
key: string,
value?: string
value: string,
selected: boolean
}
export interface Input {
key: string,
value?: string
value: string,
selected: boolean
}
export interface Runner {
key: string,
value: string,
selected: boolean
}
export interface ContainerEngine {
key: string,
value: string,
selected: boolean
}
export class SettingsManager {
settings: { [path: string]: Settings }
constructor() {
this.settings = {};
}
getSettings(workspaceFolder: WorkspaceFolder) {
if (!this.settings[workspaceFolder.uri.fsPath]) {
this.settings[workspaceFolder.uri.fsPath] = {
environments: [],
secrets: [],
variables: [],
inputs: [],
runners: [],
containerEngines: [
{
key: 'DOCKER_HOST',
value: '',
selected: false
}
]
}
}
return this.settings[workspaceFolder.uri.fsPath];
}
getEnvironments(workflow: Workflow): Environment[] {
const environments: Environment[] = [];
if (!workflow.yaml) {
@@ -67,12 +119,32 @@ export class SettingsManager {
return this.findInWorkflow(workflow.fileContent, /\${{\s*(?:inputs|github\.event\.inputs)\.(.*?)(?:\s*==\s*(.*?))?\s*}}/g);
}
editSecret(workspaceFolder: WorkspaceFolder, secret: Secret, newValue: string) {
}
editVariable(workspaceFolder: WorkspaceFolder, variable: Variable, newValue: string) {
}
editInput(workspaceFolder: WorkspaceFolder, input: Input, newValue: string) {
}
addRunner(workspaceFolder: WorkspaceFolder, runner: Runner) {
}
editContainerEngine(workspaceFolder: WorkspaceFolder, containerEngine: ContainerEngine, newValue: string) {
}
private findInWorkflow(content: string, regExp: RegExp) {
const results: (Secret | Variable | Input)[] = [];
const matches = content.matchAll(regExp);
for (const match of matches) {
results.push({ key: match[1] });
results.push({ key: match[1], value: '', selected: false });
}
return results;