diff --git a/src/act.ts b/src/act.ts index de10472..bc7cde2 100644 --- a/src/act.ts +++ b/src/act.ts @@ -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}`; diff --git a/src/settingsManager.ts b/src/settingsManager.ts index 1ad5365..a5cb15d 100644 --- a/src/settingsManager.ts +++ b/src/settingsManager.ts @@ -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 { + async getSetting(workspaceFolder: WorkspaceFolder, regExp: RegExp, storageKey: StorageKey, password: boolean): Promise { 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; diff --git a/src/views/settings/inputs.ts b/src/views/settings/inputs.ts index a8ee436..65d5f73 100644 --- a/src/views/settings/inputs.ts +++ b/src/views/settings/inputs.ts @@ -17,7 +17,7 @@ export default class InputsTreeItem extends TreeItem implements GithubLocalActio async getChildren(): Promise { 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)); } diff --git a/src/views/settings/runners.ts b/src/views/settings/runners.ts index f8bfdc5..beb546d 100644 --- a/src/views/settings/runners.ts +++ b/src/views/settings/runners.ts @@ -17,7 +17,7 @@ export default class RunnersTreeItem extends TreeItem implements GithubLocalActi async getChildren(): Promise { 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)); } diff --git a/src/views/settings/secrets.ts b/src/views/settings/secrets.ts index 0bb6736..0d4fa58 100644 --- a/src/views/settings/secrets.ts +++ b/src/views/settings/secrets.ts @@ -17,7 +17,7 @@ export default class SecretsTreeItem extends TreeItem implements GithubLocalActi async getChildren(): Promise { 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)); } diff --git a/src/views/settings/setting.ts b/src/views/settings/setting.ts index 78e0862..76822e5 100644 --- a/src/views/settings/setting.ts +++ b/src/views/settings/setting.ts @@ -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 { diff --git a/src/views/settings/settingsTreeDataProvider.ts b/src/views/settings/settingsTreeDataProvider.ts index 432ad0a..e3741d4 100644 --- a/src/views/settings/settingsTreeDataProvider.ts +++ b/src/views/settings/settingsTreeDataProvider.ts @@ -19,11 +19,11 @@ export default class SettingsTreeDataProvider implements TreeDataProvider) { 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); } } diff --git a/src/views/settings/variables.ts b/src/views/settings/variables.ts index 4792e10..47d3795 100644 --- a/src/views/settings/variables.ts +++ b/src/views/settings/variables.ts @@ -17,7 +17,7 @@ export default class VariablesTreeItem extends TreeItem implements GithubLocalAc async getChildren(): Promise { 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)); }