Fix value not required for secrets and values

Signed-off-by: Sanjula Ganepola <sanjulagane@gmail.com>
This commit is contained in:
Sanjula Ganepola
2024-11-16 20:25:49 -05:00
parent 13b8eb92bd
commit 28ee724678
8 changed files with 21 additions and 18 deletions

View File

@@ -48,7 +48,7 @@ export enum Option {
Job = '-j',
Platform = '-P',
Secret = '--secret',
Var = '--var',
Variable = '--var',
Workflows = '-W'
}
@@ -260,12 +260,13 @@ export class Act {
return;
}
const secrets = (await this.settingsManager.getSetting(workspaceFolder, SettingsManager.secretsRegExp, StorageKey.Secrets)).filter(secret => secret.selected && secret.value);
const variables = (await this.settingsManager.getSetting(workspaceFolder, SettingsManager.variablesRegExp, StorageKey.Variables)).filter(variable => variable.selected && variable.value);
const inputs = (await this.settingsManager.getSetting(workspaceFolder, SettingsManager.inputsRegExp, StorageKey.Inputs)).filter(input => input.selected && input.value);
const runners = (await this.settingsManager.getSetting(workspaceFolder, SettingsManager.runnersRegExp, StorageKey.Runners)).filter(runner => runner.selected && runner.value);
const secrets = (await this.settingsManager.getSetting(workspaceFolder, SettingsManager.secretsRegExp, StorageKey.Secrets, true)).filter(secret => secret.selected);
const variables = (await this.settingsManager.getSetting(workspaceFolder, SettingsManager.variablesRegExp, StorageKey.Variables, false)).filter(variable => variable.selected);
const inputs = (await this.settingsManager.getSetting(workspaceFolder, SettingsManager.inputsRegExp, StorageKey.Inputs, false)).filter(input => input.selected && input.value);
const runners = (await this.settingsManager.getSetting(workspaceFolder, SettingsManager.runnersRegExp, StorageKey.Runners, false)).filter(runner => runner.selected && runner.value);
const command = `${Act.base} ` +
(variables.length > 0 ? ` ${Option.Var} ${variables.map(variable => `${variable.key}=${variable.value}`).join(` ${Option.Var} `)}` : ``) +
(secrets.length > 0 ? ` ${Option.Secret} ${secrets.map(secret => (secret.value ? `${secret.key}=${secret.value}` : secret.key)).join(` ${Option.Secret} `)}` : ``) +
(variables.length > 0 ? ` ${Option.Variable} ${variables.map(variable => (variable.value ? `${variable.key}=${variable.value}` : variable.key)).join(` ${Option.Variable} `)}` : ``) +
(inputs.length > 0 ? ` ${Option.Input} ${inputs.map(input => `${input.key}=${input.value}`).join(` ${Option.Input} `)}` : ``) +
(runners.length > 0 ? ` ${Option.Platform} ${runners.map(runner => `${runner.key}=${runner.value}`).join(` ${Option.Platform} `)}` : ``) +
` ${commandArgs.options}`;

View File

@@ -5,6 +5,7 @@ import { StorageKey, StorageManager } from "./storageManager";
export interface Setting {
key: string,
value: string,
password: boolean,
selected: boolean
}
@@ -19,7 +20,7 @@ export class SettingsManager {
this.storageManager = storageManager;
}
async getSetting(workspaceFolder: WorkspaceFolder, regExp: RegExp, storageKey: StorageKey): Promise<Setting[]> {
async getSetting(workspaceFolder: WorkspaceFolder, regExp: RegExp, storageKey: StorageKey, password: boolean): Promise<Setting[]> {
const settings: Setting[] = [];
const workflows = await act.workflowsManager.getWorkflows(workspaceFolder);
@@ -28,7 +29,7 @@ export class SettingsManager {
continue;
}
const workflowSettings = this.findInWorkflow(workflow.fileContent, regExp);
const workflowSettings = this.findInWorkflow(workflow.fileContent, regExp, password);
for (const workflowSetting of workflowSettings) {
const existingSetting = settings.find(setting => setting.key === workflowSetting.key);
if (!existingSetting) {
@@ -45,6 +46,7 @@ export class SettingsManager {
settings[index] = {
key: setting.key,
value: existingSetting.value,
password: existingSetting.password,
selected: existingSetting.selected
};
}
@@ -73,12 +75,12 @@ export class SettingsManager {
await this.storageManager.update(storageKey, existingSettings);
}
private findInWorkflow(content: string, regExp: RegExp) {
private findInWorkflow(content: string, regExp: RegExp, password: boolean) {
const results: Setting[] = [];
const matches = content.matchAll(regExp);
for (const match of matches) {
results.push({ key: match[1], value: '', selected: false });
results.push({ key: match[1], value: '', password: password, selected: false });
}
return results;

View File

@@ -17,7 +17,7 @@ export default class InputsTreeItem extends TreeItem implements GithubLocalActio
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {
const items: GithubLocalActionsTreeItem[] = [];
const inputs = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.inputsRegExp, StorageKey.Inputs);
const inputs = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.inputsRegExp, StorageKey.Inputs, false);
for (const input of inputs) {
items.push(SettingTreeItem.getInputTreeItem(this.workspaceFolder, input));
}

View File

@@ -17,7 +17,7 @@ export default class RunnersTreeItem extends TreeItem implements GithubLocalActi
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {
const items: GithubLocalActionsTreeItem[] = [];
const runners = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.runnersRegExp, StorageKey.Runners);
const runners = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.runnersRegExp, StorageKey.Runners, false);
for (const runner of runners) {
items.push(SettingTreeItem.getRunnerTreeItem(this.workspaceFolder, runner));
}

View File

@@ -17,7 +17,7 @@ export default class SecretsTreeItem extends TreeItem implements GithubLocalActi
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {
const items: GithubLocalActionsTreeItem[] = [];
const secrets = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.secretsRegExp, StorageKey.Secrets);
const secrets = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.secretsRegExp, StorageKey.Secrets, true);
for (const secret of secrets) {
items.push(SettingTreeItem.getSecretTreeItem(this.workspaceFolder, secret));
}

View File

@@ -30,7 +30,7 @@ export default class SettingTreeItem extends TreeItem implements GithubLocalActi
}
static getRunnerTreeItem(workspaceFolder: WorkspaceFolder, runner: Setting): SettingTreeItem {
return new SettingTreeItem(workspaceFolder, runner, StorageKey.Runners, { description: runner.value, contextValue: 'githubLocalActions.runner', iconPath: new ThemeIcon('server') });
return new SettingTreeItem(workspaceFolder, runner, StorageKey.Runners, { description: runner.value, contextValue: 'githubLocalActions.runner', iconPath: new ThemeIcon('vm-connect') });
}
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {

View File

@@ -19,11 +19,11 @@ export default class SettingsTreeDataProvider implements TreeDataProvider<Github
prompt: `Enter the value for ${settingTreeItem.setting.value}`,
placeHolder: `Setting value`,
value: settingTreeItem.setting.value,
password: true
password: settingTreeItem.setting.password
});
if (newValue !== undefined) {
await act.settingsManager.editSetting(settingTreeItem.workspaceFolder, { key: settingTreeItem.setting.key, value: newValue, selected: settingTreeItem.setting.selected }, settingTreeItem.storageKey);
await act.settingsManager.editSetting(settingTreeItem.workspaceFolder, { key: settingTreeItem.setting.key, value: newValue, selected: settingTreeItem.setting.selected, password: settingTreeItem.setting.password }, settingTreeItem.storageKey);
this.refresh();
}
})
@@ -48,7 +48,7 @@ export default class SettingsTreeDataProvider implements TreeDataProvider<Github
async onDidChangeCheckboxState(event: TreeCheckboxChangeEvent<SettingTreeItem>) {
for await (const [treeItem, state] of event.items) {
await act.settingsManager.editSetting(treeItem.workspaceFolder, { key: treeItem.setting.key, value: treeItem.setting.value, selected: state === TreeItemCheckboxState.Checked }, treeItem.storageKey);
await act.settingsManager.editSetting(treeItem.workspaceFolder, { key: treeItem.setting.key, value: treeItem.setting.value, selected: state === TreeItemCheckboxState.Checked, password: treeItem.setting.password }, treeItem.storageKey);
}
}

View File

@@ -17,7 +17,7 @@ export default class VariablesTreeItem extends TreeItem implements GithubLocalAc
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {
const items: GithubLocalActionsTreeItem[] = [];
const variables = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.variablesRegExp, StorageKey.Variables);
const variables = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.variablesRegExp, StorageKey.Variables, false);
for (const variable of variables) {
items.push(SettingTreeItem.getVariableTreeItem(this.workspaceFolder, variable));
}