diff --git a/package-lock.json b/package-lock.json index d89b385..87858c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4255,4 +4255,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 25f798a..b19c98f 100644 --- a/package.json +++ b/package.json @@ -347,7 +347,7 @@ { "command": "githubLocalActions.refreshComponents", "when": "view == components", - "group": "navigation@0" + "group": "navigation@99" }, { "command": "githubLocalActions.runAllWorkflows", @@ -362,7 +362,7 @@ { "command": "githubLocalActions.refreshWorkflows", "when": "view == workflows", - "group": "navigation@2" + "group": "navigation@99" }, { "command": "githubLocalActions.clearAll", @@ -372,17 +372,17 @@ { "command": "githubLocalActions.refreshHistory", "when": "view == history", - "group": "navigation@1" + "group": "navigation@99" }, { "command": "githubLocalActions.refreshSettings", "when": "view == settings", - "group": "navigation@0" + "group": "navigation@99" }, { "submenu": "githubLocalActions.helpAndSupport", "when": "view =~ /^(components|workflows|history|settings)$/", - "group": "navigation@99" + "group": "navigation@98" } ], "githubLocalActions.helpAndSupport": [ diff --git a/src/views/decorationProvider.ts b/src/views/decorationProvider.ts index 7f0dd98..a34b56e 100644 --- a/src/views/decorationProvider.ts +++ b/src/views/decorationProvider.ts @@ -17,7 +17,7 @@ export class DecorationProvider implements FileDecorationProvider { badge: '✅', color: new ThemeColor('GitHubLocalActions.green') }; - } else if (!required && (status === CliStatus.NotInstalled || status === CliStatus.NotRunning|| status === ExtensionStatus.NotActivated)) { + } else if (!required && (status === CliStatus.NotInstalled || status === CliStatus.NotRunning || status === ExtensionStatus.NotActivated)) { return { badge: '⚠️', color: new ThemeColor('GitHubLocalActions.yellow') @@ -38,5 +38,13 @@ export class DecorationProvider implements FileDecorationProvider { }; } } + + // else if (uri.scheme === SecretsTreeItem.contextValue || uri.scheme === VariablesTreeItem.contextValue || uri.scheme === InputsTreeItem.contextValue || uri.scheme === RunnersTreeItem.contextValue) { + // const selected = params.get('selected'); + + // return { + // badge: `${selected}` + // }; + // } } } \ No newline at end of file diff --git a/src/views/settings/inputs.ts b/src/views/settings/inputs.ts index 65d5f73..5f8a600 100644 --- a/src/views/settings/inputs.ts +++ b/src/views/settings/inputs.ts @@ -1,6 +1,6 @@ import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode"; import { act } from "../../extension"; -import { SettingsManager } from "../../settingsManager"; +import { Setting, SettingsManager } from "../../settingsManager"; import { StorageKey } from "../../storageManager"; import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem"; import SettingTreeItem from "./setting"; @@ -8,8 +8,9 @@ import SettingTreeItem from "./setting"; export default class InputsTreeItem extends TreeItem implements GithubLocalActionsTreeItem { static contextValue = 'githubLocalActions.inputs'; - constructor(public workspaceFolder: WorkspaceFolder) { + constructor(public workspaceFolder: WorkspaceFolder, inputs: Setting[]) { super('Inputs', TreeItemCollapsibleState.Collapsed); + this.description = `${inputs.filter(input => input.selected).length}/${inputs.length}`; this.contextValue = InputsTreeItem.contextValue; this.iconPath = new ThemeIcon('record-keys'); } diff --git a/src/views/settings/runners.ts b/src/views/settings/runners.ts index beb546d..f0841d1 100644 --- a/src/views/settings/runners.ts +++ b/src/views/settings/runners.ts @@ -1,6 +1,6 @@ import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode"; import { act } from "../../extension"; -import { SettingsManager } from "../../settingsManager"; +import { Setting, SettingsManager } from "../../settingsManager"; import { StorageKey } from "../../storageManager"; import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem"; import SettingTreeItem from "./setting"; @@ -8,8 +8,9 @@ import SettingTreeItem from "./setting"; export default class RunnersTreeItem extends TreeItem implements GithubLocalActionsTreeItem { static contextValue = 'githubLocalActions.runners'; - constructor(public workspaceFolder: WorkspaceFolder) { + constructor(public workspaceFolder: WorkspaceFolder, runners: Setting[]) { super('Runners', TreeItemCollapsibleState.Collapsed); + this.description = `${runners.filter(runner => runner.selected).length}/${runners.length}`; this.contextValue = RunnersTreeItem.contextValue; this.iconPath = new ThemeIcon('server-environment'); } diff --git a/src/views/settings/secrets.ts b/src/views/settings/secrets.ts index 0d4fa58..8c12fdd 100644 --- a/src/views/settings/secrets.ts +++ b/src/views/settings/secrets.ts @@ -1,6 +1,6 @@ import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode"; import { act } from "../../extension"; -import { SettingsManager } from "../../settingsManager"; +import { Setting, SettingsManager } from "../../settingsManager"; import { StorageKey } from "../../storageManager"; import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem"; import SettingTreeItem from "./setting"; @@ -8,8 +8,9 @@ import SettingTreeItem from "./setting"; export default class SecretsTreeItem extends TreeItem implements GithubLocalActionsTreeItem { static contextValue = 'githubLocalActions.secrets'; - constructor(public workspaceFolder: WorkspaceFolder) { + constructor(public workspaceFolder: WorkspaceFolder, secrets: Setting[]) { super('Secrets', TreeItemCollapsibleState.Collapsed); + this.description = `${secrets.filter(secret => secret.selected).length}/${secrets.length}`; this.contextValue = SecretsTreeItem.contextValue; this.iconPath = new ThemeIcon('lock'); } diff --git a/src/views/settings/settingsTreeDataProvider.ts b/src/views/settings/settingsTreeDataProvider.ts index e3741d4..b734728 100644 --- a/src/views/settings/settingsTreeDataProvider.ts +++ b/src/views/settings/settingsTreeDataProvider.ts @@ -50,6 +50,7 @@ export default class SettingsTreeDataProvider implements TreeDataProvider { diff --git a/src/views/settings/variables.ts b/src/views/settings/variables.ts index 47d3795..6f308ab 100644 --- a/src/views/settings/variables.ts +++ b/src/views/settings/variables.ts @@ -1,6 +1,6 @@ import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode"; import { act } from "../../extension"; -import { SettingsManager } from "../../settingsManager"; +import { Setting, SettingsManager } from "../../settingsManager"; import { StorageKey } from "../../storageManager"; import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem"; import SettingTreeItem from "./setting"; @@ -8,8 +8,9 @@ import SettingTreeItem from "./setting"; export default class VariablesTreeItem extends TreeItem implements GithubLocalActionsTreeItem { static contextValue = 'githubLocalActions.variables'; - constructor(public workspaceFolder: WorkspaceFolder) { + constructor(public workspaceFolder: WorkspaceFolder, variables: Setting[]) { super('Variables', TreeItemCollapsibleState.Collapsed); + this.description = `${variables.filter(variable => variable.selected).length}/${variables.length}`; this.contextValue = VariablesTreeItem.contextValue; this.iconPath = new ThemeIcon('symbol-key'); } diff --git a/src/views/settings/workspaceFolderSettings.ts b/src/views/settings/workspaceFolderSettings.ts index 81cf382..181dcdb 100644 --- a/src/views/settings/workspaceFolderSettings.ts +++ b/src/views/settings/workspaceFolderSettings.ts @@ -1,4 +1,7 @@ import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode"; +import { act } from "../../extension"; +import { SettingsManager } from "../../settingsManager"; +import { StorageKey } from "../../storageManager"; import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem"; import InputsTreeItem from "./inputs"; import RunnersTreeItem from "./runners"; @@ -17,11 +20,15 @@ export default class WorkspaceFolderSettingsTreeItem extends TreeItem implements async getChildren(): Promise { const items: GithubLocalActionsTreeItem[] = []; + const secrets = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.secretsRegExp, StorageKey.Secrets, true); + const variables = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.variablesRegExp, StorageKey.Variables, false); + const inputs = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.inputsRegExp, StorageKey.Inputs, false); + const runners = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.runnersRegExp, StorageKey.Runners, false); items.push(...[ - new SecretsTreeItem(this.workspaceFolder), - new VariablesTreeItem(this.workspaceFolder), - new InputsTreeItem(this.workspaceFolder), - new RunnersTreeItem(this.workspaceFolder) + new SecretsTreeItem(this.workspaceFolder, secrets), + new VariablesTreeItem(this.workspaceFolder, variables), + new InputsTreeItem(this.workspaceFolder, inputs), + new RunnersTreeItem(this.workspaceFolder, runners) ]); return items; diff --git a/tsconfig.json b/tsconfig.json index 8a79f20..c519a3d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,10 +7,10 @@ ], "sourceMap": true, "rootDir": "src", - "strict": true /* enable all strict type-checking options */ + "strict": true /* enable all strict type-checking options */ /* Additional Checks */ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ // "noUnusedParameters": true, /* Report errors on unused parameters. */ } -} +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 37d7024..8044ea9 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -10,7 +10,7 @@ const path = require('path'); /** @type WebpackConfig */ const extensionConfig = { target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ - mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') + mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ output: { @@ -45,4 +45,4 @@ const extensionConfig = { level: "log", // enables logging required for problem matchers }, }; -module.exports = [ extensionConfig ]; \ No newline at end of file +module.exports = [extensionConfig]; \ No newline at end of file