-
Notifications
You must be signed in to change notification settings - Fork 175
Expand file tree
/
Copy pathextension.ts
More file actions
133 lines (109 loc) · 4.82 KB
/
extension.ts
File metadata and controls
133 lines (109 loc) · 4.82 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
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";
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();
// Handle focus changes to pause/resume polling
context.subscriptions.push(
vscode.window.onDidChangeWindowState(e => {
store.setFocused(e.focused);
})
);
// Pinned workflows
await initPinnedWorkflows(store);
// Tree views
await initTreeViews(context, store);
// Commands
registerOpenWorkflowRun(context);
registerOpenWorkflowFile(context);
registerOpenWorkflowJobLogs(context);
registerOpenWorkflowStepLogs(context);
registerTriggerWorkflowRun(context, store);
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);
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();
}