Skip to content

Commit bc6394a

Browse files
committed
Support showing repo variables in the sidebar
1 parent 90b8537 commit bc6394a

File tree

9 files changed

+162
-48
lines changed

9 files changed

+162
-48
lines changed

package-lock.json

Lines changed: 94 additions & 45 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@
400400
"dependencies": {
401401
"@github/actions-languageserver": "*",
402402
"@github/actions-workflow-parser": "*",
403-
"@octokit/rest": "^19.0.5",
403+
"@octokit/rest": "^19.0.7",
404404
"buffer": "^6.0.3",
405405
"crypto-browserify": "^3.12.0",
406406
"dayjs": "^1.11.7",
@@ -414,4 +414,4 @@
414414
"uuid": "^3.3.3",
415415
"vscode-languageclient": "^8.0.2"
416416
}
417-
}
417+
}

src/model.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ export type WorkflowStep = GetElementType<WorkflowJob["steps"]>;
3434

3535
export type RepoSecret = OctokitData<"listRepoSecrets", "secrets">;
3636

37+
export type RepoVariable = OctokitData<"listRepoVariables", "variables">;
38+
3739
export type Environment = OctokitRepoData<"getAllEnvironments", "environments">;
3840

3941
export type EnvironmentSecret = OctokitData<"listEnvironmentSecrets", "secrets">;

src/treeViews/settings.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import {SecretsNode} from "./settings/secretsNode";
99
import {SelfHostedRunnersNode} from "./settings/selfHostedRunnersNode";
1010
import {SettingsExplorerNode} from "./settings/types";
1111
import {getGitHubContext} from "../git/repository";
12+
import {RepoVariablesNode} from "./settings/repoVariablesNode";
13+
import {VariablesNode} from "./settings/variablesNode";
1214

1315
export class SettingsTreeProvider implements vscode.TreeDataProvider<SettingsExplorerNode> {
1416
private _onDidChangeTreeData = new vscode.EventEmitter<SettingsExplorerNode | null>();
@@ -53,6 +55,20 @@ export class SettingsTreeProvider implements vscode.TreeDataProvider<SettingsExp
5355
return element.getSecrets();
5456
}
5557

58+
//
59+
// Variables
60+
//
61+
if (element instanceof VariablesNode) {
62+
return [new RepoVariablesNode(element.gitHubRepoContext)];
63+
}
64+
65+
if (element instanceof RepoVariablesNode) {
66+
return element.getVariables();
67+
}
68+
69+
//
70+
// Self-hosted runners
71+
//
5672
if (element instanceof SelfHostedRunnersNode) {
5773
return element.getRunners();
5874
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import * as vscode from "vscode";
2+
import {GitHubRepoContext} from "../../git/repository";
3+
import {RepoVariable} from "../../model";
4+
5+
export class RepoVariableNode extends vscode.TreeItem {
6+
constructor(public readonly gitHubRepoContext: GitHubRepoContext, public readonly variable: RepoVariable) {
7+
super(variable.name);
8+
9+
this.contextValue = "variable";
10+
}
11+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import * as vscode from "vscode";
2+
import {GitHubRepoContext} from "../../git/repository";
3+
import {RepoVariableNode} from "./repoVariableNode";
4+
5+
export class RepoVariablesNode extends vscode.TreeItem {
6+
constructor(public readonly gitHubRepoContext: GitHubRepoContext) {
7+
super("Repository Variables", vscode.TreeItemCollapsibleState.Collapsed);
8+
9+
this.contextValue = "variables";
10+
}
11+
12+
async getVariables(): Promise<vscode.TreeItem[]> {
13+
const result = await this.gitHubRepoContext.client.actions.listRepoVariables({
14+
owner: this.gitHubRepoContext.owner,
15+
repo: this.gitHubRepoContext.name
16+
});
17+
18+
return result.data.variables.map(s => new RepoVariableNode(this.gitHubRepoContext, s));
19+
}
20+
}

0 commit comments

Comments
 (0)