-
Notifications
You must be signed in to change notification settings - Fork 175
Expand file tree
/
Copy pathextension.ts
More file actions
140 lines (116 loc) · 5.35 KB
/
extension.ts
File metadata and controls
140 lines (116 loc) · 5.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import * as vscode from "vscode";
import {canReachGitHubAPI} from "./api/canReachGitHubAPI";
import {getSession} from "./auth/auth";
import {registerCancelWorkflowRun} from "./commands/cancelWorkflowRun";
import {registerOpenWorkflowFile} from "./commands/openWorkflowFile";
import {registerOpenWorkflowJobLogs} from "./commands/openWorkflowJobLogs";
import {registerOpenWorkflowStepLogs} from "./commands/openWorkflowStepLogs";
import {registerOpenWorkflowRun} from "./commands/openWorkflowRun";
import {registerPinWorkflow} from "./commands/pinWorkflow";
import {registerReRunWorkflowRun} from "./commands/rerunWorkflowRun";
import {registerAddSecret} from "./commands/secrets/addSecret";
import {registerCopySecret} from "./commands/secrets/copySecret";
import {registerDeleteSecret} from "./commands/secrets/deleteSecret";
import {registerUpdateSecret} from "./commands/secrets/updateSecret";
import {registerTriggerWorkflowRun} from "./commands/triggerWorkflowRun";
import {registerUnPinWorkflow} from "./commands/unpinWorkflow";
import {registerAddVariable} from "./commands/variables/addVariable";
import {registerCopyVariable} from "./commands/variables/copyVariable";
import {registerDeleteVariable} from "./commands/variables/deleteVariable";
import {registerUpdateVariable} from "./commands/variables/updateVariable";
import {initConfiguration} from "./configuration/configuration";
import {getGitHubContext} from "./git/repository";
import {init as initLogger, log, revealLog} from "./log";
import {LogScheme} from "./logs/constants";
import {WorkflowStepLogProvider} from "./logs/fileProvider";
import {WorkflowStepLogFoldingProvider} from "./logs/foldingProvider";
import {WorkflowStepLogSymbolProvider} from "./logs/symbolProvider";
import {initPinnedWorkflows} from "./pinnedWorkflows/pinnedWorkflows";
import {RunStore} from "./store/store";
import {initWorkflowDocumentTracking} from "./tracker/workflowDocumentTracker";
import {initWorkspaceChangeTracker} from "./tracker/workspaceTracker";
import {initResources} from "./treeViews/icons";
import {initTreeViews} from "./treeViews/treeViews";
import {deactivateLanguageServer, initLanguageServer} from "./workflow/languageServer";
import {registerSignIn} from "./commands/signIn";
import {ActionVersionHoverProvider} from "./hover/actionVersionHoverProvider";
import {ActionVersionCodeActionProvider} from "./hover/actionVersionCodeActionProvider";
import {WorkflowSelector, ActionSelector} from "./workflow/documentSelector";
export async function activate(context: vscode.ExtensionContext) {
initLogger();
log("Activating GitHub Actions extension...");
const hasSession = !!(await getSession());
const canReachAPI = hasSession && (await canReachGitHubAPI());
// Prefetch git repository origin url
const ghContext = hasSession && (await getGitHubContext());
const hasGitHubRepos = ghContext && ghContext.repos.length > 0;
await Promise.all([
vscode.commands.executeCommand("setContext", "github-actions.signed-in", hasSession),
vscode.commands.executeCommand("setContext", "github-actions.internet-access", canReachAPI),
vscode.commands.executeCommand("setContext", "github-actions.has-repos", hasGitHubRepos)
]);
initResources(context);
initConfiguration(context);
// Track workflow documents and workspace changes
initWorkspaceChangeTracker(context);
await initWorkflowDocumentTracking(context);
const store = new RunStore();
// Pinned workflows
await initPinnedWorkflows(store);
// Tree views
await initTreeViews(context, store);
// Commands
registerOpenWorkflowRun(context);
registerOpenWorkflowFile(context);
registerOpenWorkflowJobLogs(context);
registerOpenWorkflowStepLogs(context);
registerTriggerWorkflowRun(context);
registerReRunWorkflowRun(context);
registerCancelWorkflowRun(context);
registerAddSecret(context);
registerDeleteSecret(context);
registerCopySecret(context);
registerUpdateSecret(context);
registerAddVariable(context);
registerUpdateVariable(context);
registerDeleteVariable(context);
registerCopyVariable(context);
registerPinWorkflow(context);
registerUnPinWorkflow(context);
registerSignIn(context);
// Log providers
context.subscriptions.push(
vscode.workspace.registerTextDocumentContentProvider(LogScheme, new WorkflowStepLogProvider())
);
context.subscriptions.push(
vscode.languages.registerFoldingRangeProvider({scheme: LogScheme}, new WorkflowStepLogFoldingProvider())
);
context.subscriptions.push(
vscode.languages.registerDocumentSymbolProvider(
{
scheme: LogScheme
},
new WorkflowStepLogSymbolProvider()
)
);
// Editing features
await initLanguageServer(context);
// Action version hover and code actions
const documentSelectors = [WorkflowSelector, ActionSelector];
context.subscriptions.push(
vscode.languages.registerHoverProvider(documentSelectors, new ActionVersionHoverProvider())
);
context.subscriptions.push(
vscode.languages.registerCodeActionsProvider(documentSelectors, new ActionVersionCodeActionProvider(), {
providedCodeActionKinds: ActionVersionCodeActionProvider.providedCodeActionKinds
})
);
log("...initialized");
if (!PRODUCTION) {
// In debugging mode, always open the log for the extension in the `Output` window
revealLog();
}
}
export function deactivate(): Thenable<void> | undefined {
return deactivateLanguageServer();
}