@theia/task 1.34.2 → 1.34.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +641 -641
- package/README.md +193 -193
- package/lib/browser/index.d.ts +6 -6
- package/lib/browser/index.js +33 -33
- package/lib/browser/process/process-task-contribution.d.ts +6 -6
- package/lib/browser/process/process-task-contribution.js +43 -43
- package/lib/browser/process/process-task-frontend-module.d.ts +2 -2
- package/lib/browser/process/process-task-frontend-module.js +27 -27
- package/lib/browser/process/process-task-resolver.d.ts +17 -17
- package/lib/browser/process/process-task-resolver.js +93 -93
- package/lib/browser/provided-task-configurations.d.ts +32 -32
- package/lib/browser/provided-task-configurations.js +171 -171
- package/lib/browser/provided-task-configurations.spec.d.ts +1 -1
- package/lib/browser/provided-task-configurations.spec.js +43 -43
- package/lib/browser/quick-open-task.d.ts +129 -129
- package/lib/browser/quick-open-task.js +636 -636
- package/lib/browser/task-configuration-manager.d.ts +64 -64
- package/lib/browser/task-configuration-manager.js +261 -261
- package/lib/browser/task-configuration-model.d.ts +32 -32
- package/lib/browser/task-configuration-model.js +79 -79
- package/lib/browser/task-configurations.d.ts +127 -127
- package/lib/browser/task-configurations.js +479 -479
- package/lib/browser/task-contribution.d.ts +173 -173
- package/lib/browser/task-contribution.js +199 -199
- package/lib/browser/task-definition-registry.d.ts +38 -38
- package/lib/browser/task-definition-registry.js +131 -131
- package/lib/browser/task-definition-registry.spec.d.ts +1 -1
- package/lib/browser/task-definition-registry.spec.js +170 -170
- package/lib/browser/task-frontend-contribution.d.ts +56 -56
- package/lib/browser/task-frontend-contribution.js +353 -353
- package/lib/browser/task-frontend-module.d.ts +5 -5
- package/lib/browser/task-frontend-module.js +79 -79
- package/lib/browser/task-name-resolver.d.ts +13 -13
- package/lib/browser/task-name-resolver.js +65 -65
- package/lib/browser/task-node.d.ts +9 -9
- package/lib/browser/task-node.js +17 -17
- package/lib/browser/task-preferences.d.ts +4 -4
- package/lib/browser/task-preferences.js +40 -40
- package/lib/browser/task-problem-matcher-registry.d.ts +40 -40
- package/lib/browser/task-problem-matcher-registry.js +310 -310
- package/lib/browser/task-problem-pattern-registry.d.ts +23 -23
- package/lib/browser/task-problem-pattern-registry.js +208 -208
- package/lib/browser/task-schema-updater.d.ts +58 -58
- package/lib/browser/task-schema-updater.js +672 -672
- package/lib/browser/task-service.d.ts +276 -276
- package/lib/browser/task-service.js +1119 -1119
- package/lib/browser/task-source-resolver.d.ts +9 -9
- package/lib/browser/task-source-resolver.js +51 -51
- package/lib/browser/task-templates.d.ts +13 -13
- package/lib/browser/task-templates.js +161 -161
- package/lib/browser/task-terminal-widget-manager.d.ts +44 -44
- package/lib/browser/task-terminal-widget-manager.js +224 -224
- package/lib/browser/tasks-monaco-contribution.d.ts +1 -1
- package/lib/browser/tasks-monaco-contribution.js +27 -27
- package/lib/common/index.d.ts +3 -3
- package/lib/common/index.js +30 -30
- package/lib/common/problem-matcher-protocol.d.ts +124 -124
- package/lib/common/problem-matcher-protocol.js +132 -132
- package/lib/common/process/task-protocol.d.ts +68 -68
- package/lib/common/process/task-protocol.js +33 -33
- package/lib/common/task-common-module.d.ts +7 -7
- package/lib/common/task-common-module.js +33 -33
- package/lib/common/task-protocol.d.ts +190 -190
- package/lib/common/task-protocol.js +125 -125
- package/lib/common/task-watcher.d.ts +17 -17
- package/lib/common/task-watcher.js +86 -86
- package/lib/node/custom/custom-task-runner-backend-module.d.ts +2 -2
- package/lib/node/custom/custom-task-runner-backend-module.js +36 -36
- package/lib/node/custom/custom-task-runner-contribution.d.ts +6 -6
- package/lib/node/custom/custom-task-runner-contribution.js +42 -42
- package/lib/node/custom/custom-task-runner.d.ts +15 -15
- package/lib/node/custom/custom-task-runner.js +69 -69
- package/lib/node/custom/custom-task.d.ts +20 -20
- package/lib/node/custom/custom-task.js +78 -78
- package/lib/node/index.d.ts +3 -3
- package/lib/node/index.js +30 -30
- package/lib/node/process/process-task-runner-backend-module.d.ts +2 -2
- package/lib/node/process/process-task-runner-backend-module.js +36 -36
- package/lib/node/process/process-task-runner-contribution.d.ts +6 -6
- package/lib/node/process/process-task-runner-contribution.js +43 -43
- package/lib/node/process/process-task-runner.d.ts +60 -60
- package/lib/node/process/process-task-runner.js +352 -352
- package/lib/node/process/process-task.d.ts +26 -26
- package/lib/node/process/process-task.js +139 -139
- package/lib/node/process/process-task.spec.d.ts +1 -1
- package/lib/node/process/process-task.spec.js +29 -29
- package/lib/node/task-abstract-line-matcher.d.ts +49 -49
- package/lib/node/task-abstract-line-matcher.js +278 -278
- package/lib/node/task-backend-application-contribution.d.ts +8 -8
- package/lib/node/task-backend-application-contribution.js +48 -48
- package/lib/node/task-backend-module.d.ts +3 -3
- package/lib/node/task-backend-module.js +50 -50
- package/lib/node/task-line-matchers.d.ts +27 -27
- package/lib/node/task-line-matchers.js +121 -121
- package/lib/node/task-manager.d.ts +55 -55
- package/lib/node/task-manager.js +135 -135
- package/lib/node/task-problem-collector.d.ts +10 -10
- package/lib/node/task-problem-collector.js +57 -57
- package/lib/node/task-problem-collector.spec.d.ts +1 -1
- package/lib/node/task-problem-collector.spec.js +310 -310
- package/lib/node/task-runner-protocol.d.ts +16 -16
- package/lib/node/task-runner-protocol.js +19 -19
- package/lib/node/task-runner.d.ts +50 -50
- package/lib/node/task-runner.js +97 -97
- package/lib/node/task-server.d.ts +39 -39
- package/lib/node/task-server.js +237 -237
- package/lib/node/task-server.slow-spec.d.ts +1 -1
- package/lib/node/task-server.slow-spec.js +395 -395
- package/lib/node/task.d.ts +50 -50
- package/lib/node/task.js +77 -77
- package/lib/node/test/task-test-container.d.ts +2 -2
- package/lib/node/test/task-test-container.js +58 -58
- package/package.json +13 -13
- package/src/browser/index.ts +22 -22
- package/src/browser/process/process-task-contribution.ts +31 -31
- package/src/browser/process/process-task-frontend-module.ts +27 -27
- package/src/browser/process/process-task-resolver.ts +89 -89
- package/src/browser/provided-task-configurations.spec.ts +46 -46
- package/src/browser/provided-task-configurations.ts +170 -170
- package/src/browser/quick-open-task.ts +701 -701
- package/src/browser/style/index.css +19 -19
- package/src/browser/task-configuration-manager.ts +256 -256
- package/src/browser/task-configuration-model.ts +101 -101
- package/src/browser/task-configurations.ts +507 -507
- package/src/browser/task-contribution.ts +254 -254
- package/src/browser/task-definition-registry.spec.ts +203 -203
- package/src/browser/task-definition-registry.ts +128 -128
- package/src/browser/task-frontend-contribution.ts +396 -396
- package/src/browser/task-frontend-module.ts +86 -86
- package/src/browser/task-name-resolver.ts +55 -55
- package/src/browser/task-node.ts +37 -37
- package/src/browser/task-preferences.ts +40 -40
- package/src/browser/task-problem-matcher-registry.ts +308 -308
- package/src/browser/task-problem-pattern-registry.ts +195 -195
- package/src/browser/task-schema-updater.ts +703 -703
- package/src/browser/task-service.ts +1163 -1163
- package/src/browser/task-source-resolver.ts +36 -36
- package/src/browser/task-templates.ts +168 -168
- package/src/browser/task-terminal-widget-manager.ts +221 -221
- package/src/browser/tasks-monaco-contribution.ts +27 -27
- package/src/common/index.ts +19 -19
- package/src/common/problem-matcher-protocol.ts +235 -235
- package/src/common/process/task-protocol.ts +97 -97
- package/src/common/task-common-module.ts +34 -34
- package/src/common/task-protocol.ts +310 -310
- package/src/common/task-watcher.ts +78 -78
- package/src/node/custom/custom-task-runner-backend-module.ts +37 -37
- package/src/node/custom/custom-task-runner-contribution.ts +30 -30
- package/src/node/custom/custom-task-runner.ts +60 -60
- package/src/node/custom/custom-task.ts +73 -73
- package/src/node/index.ts +19 -19
- package/src/node/process/process-task-runner-backend-module.ts +37 -37
- package/src/node/process/process-task-runner-contribution.ts +31 -31
- package/src/node/process/process-task-runner.ts +371 -371
- package/src/node/process/process-task.spec.ts +30 -30
- package/src/node/process/process-task.ts +147 -147
- package/src/node/task-abstract-line-matcher.ts +317 -317
- package/src/node/task-backend-application-contribution.ts +36 -36
- package/src/node/task-backend-module.ts +57 -57
- package/src/node/task-line-matchers.ts +127 -127
- package/src/node/task-manager.ts +129 -129
- package/src/node/task-problem-collector.spec.ts +338 -338
- package/src/node/task-problem-collector.ts +62 -62
- package/src/node/task-runner-protocol.ts +33 -33
- package/src/node/task-runner.ts +96 -96
- package/src/node/task-server.slow-spec.ts +444 -444
- package/src/node/task-server.ts +263 -263
- package/src/node/task.ts +103 -103
- package/src/node/test/task-test-container.ts +63 -63
|
@@ -1,637 +1,637 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// *****************************************************************************
|
|
3
|
-
// Copyright (C) 2017 Ericsson and others.
|
|
4
|
-
//
|
|
5
|
-
// This program and the accompanying materials are made available under the
|
|
6
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
-
//
|
|
9
|
-
// This Source Code may also be made available under the following Secondary
|
|
10
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
-
// with the GNU Classpath Exception which is available at
|
|
13
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
-
//
|
|
15
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
16
|
-
// *****************************************************************************
|
|
17
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
-
};
|
|
23
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
-
};
|
|
26
|
-
var QuickOpenTask_1;
|
|
27
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.TaskRestartRunningQuickOpen = exports.RunningTaskQuickOpenItem = exports.TaskRunningQuickOpen = exports.TaskTerminateQuickOpen = exports.TaskConfigureQuickOpenItem = exports.ConfigureBuildOrTestTaskQuickOpenItem = exports.TaskRunQuickOpenItem = exports.QuickOpenTask = exports.ConfigureTaskAction = void 0;
|
|
29
|
-
const inversify_1 = require("@theia/core/shared/inversify");
|
|
30
|
-
const task_service_1 = require("./task-service");
|
|
31
|
-
const task_protocol_1 = require("../common/task-protocol");
|
|
32
|
-
const task_definition_registry_1 = require("./task-definition-registry");
|
|
33
|
-
const uri_1 = require("@theia/core/lib/common/uri");
|
|
34
|
-
const browser_1 = require("@theia/core/lib/browser");
|
|
35
|
-
const browser_2 = require("@theia/workspace/lib/browser");
|
|
36
|
-
const terminal_service_1 = require("@theia/terminal/lib/browser/base/terminal-service");
|
|
37
|
-
const task_name_resolver_1 = require("./task-name-resolver");
|
|
38
|
-
const task_source_resolver_1 = require("./task-source-resolver");
|
|
39
|
-
const task_configuration_manager_1 = require("./task-configuration-manager");
|
|
40
|
-
const quick_input_service_1 = require("@theia/core/lib/browser/quick-input/quick-input-service");
|
|
41
|
-
const pickerQuickAccess_1 = require("@theia/monaco-editor-core/esm/vs/platform/quickinput/browser/pickerQuickAccess");
|
|
42
|
-
var ConfigureTaskAction;
|
|
43
|
-
(function (ConfigureTaskAction) {
|
|
44
|
-
ConfigureTaskAction.ID = 'workbench.action.tasks.configureTaskRunner';
|
|
45
|
-
ConfigureTaskAction.TEXT = 'Configure Task';
|
|
46
|
-
})(ConfigureTaskAction = exports.ConfigureTaskAction || (exports.ConfigureTaskAction = {}));
|
|
47
|
-
let QuickOpenTask = QuickOpenTask_1 = class QuickOpenTask {
|
|
48
|
-
constructor() {
|
|
49
|
-
this.description = 'Run Task';
|
|
50
|
-
this.items = [];
|
|
51
|
-
}
|
|
52
|
-
init() {
|
|
53
|
-
return this.doInit(this.taskService.startUserAction());
|
|
54
|
-
}
|
|
55
|
-
async doInit(token) {
|
|
56
|
-
const recentTasks = this.taskService.recentTasks;
|
|
57
|
-
const configuredTasks = await this.taskService.getConfiguredTasks(token);
|
|
58
|
-
const providedTasks = await this.taskService.getProvidedTasks(token);
|
|
59
|
-
const { filteredRecentTasks, filteredConfiguredTasks, filteredProvidedTasks } = this.getFilteredTasks(recentTasks, configuredTasks, providedTasks);
|
|
60
|
-
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
61
|
-
this.items = [];
|
|
62
|
-
const filteredRecentTasksItems = this.getItems(filteredRecentTasks, 'recently used tasks', token, isMulti);
|
|
63
|
-
const filteredConfiguredTasksItems = this.getItems(filteredConfiguredTasks, 'configured tasks', token, isMulti);
|
|
64
|
-
const filteredProvidedTasksItems = this.getItems(filteredProvidedTasks, 'detected tasks', token, isMulti);
|
|
65
|
-
this.items.push(...filteredRecentTasksItems, ...filteredConfiguredTasksItems, ...filteredProvidedTasksItems);
|
|
66
|
-
}
|
|
67
|
-
onDidTriggerGearIcon(item) {
|
|
68
|
-
if (item instanceof TaskRunQuickOpenItem) {
|
|
69
|
-
this.taskService.configure(item.token, item.task);
|
|
70
|
-
this.quickInputService.hide();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
async open() {
|
|
74
|
-
var _a;
|
|
75
|
-
await this.init();
|
|
76
|
-
if (!this.items.length) {
|
|
77
|
-
this.items.push(({
|
|
78
|
-
label: 'No task to run found. Configure Tasks...',
|
|
79
|
-
execute: () => this.configure()
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, {
|
|
83
|
-
placeholder: 'Select the task to run',
|
|
84
|
-
onDidTriggerItemButton: ({ item }) => this.onDidTriggerGearIcon(item)
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
attach() {
|
|
88
|
-
this.items = [];
|
|
89
|
-
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
90
|
-
this.taskService.getRunningTasks().then(tasks => {
|
|
91
|
-
var _a;
|
|
92
|
-
if (!tasks.length) {
|
|
93
|
-
this.items.push({
|
|
94
|
-
label: 'No tasks found',
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
tasks.forEach((task) => {
|
|
99
|
-
// can only attach to terminal processes, so only list those
|
|
100
|
-
if (task.terminalId) {
|
|
101
|
-
this.items.push(new RunningTaskQuickOpenItem(task, this.taskService, this.taskNameResolver, this.taskSourceResolver, this.taskDefinitionRegistry, this.labelProvider, isMulti, () => this.taskService.attach(task.terminalId, task)));
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
if (this.items.length === 0) {
|
|
106
|
-
this.items.push(({
|
|
107
|
-
label: 'No tasks found'
|
|
108
|
-
}));
|
|
109
|
-
}
|
|
110
|
-
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, { placeholder: 'Choose task to open' });
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
async configure() {
|
|
114
|
-
var _a;
|
|
115
|
-
this.items = [];
|
|
116
|
-
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
117
|
-
const token = this.taskService.startUserAction();
|
|
118
|
-
const configuredTasks = await this.taskService.getConfiguredTasks(token);
|
|
119
|
-
const providedTasks = await this.taskService.getProvidedTasks(token);
|
|
120
|
-
// check if tasks.json exists. If not, display "Create tasks.json file from template"
|
|
121
|
-
// If tasks.json exists and empty, display 'Open tasks.json file'
|
|
122
|
-
const { filteredConfiguredTasks, filteredProvidedTasks } = this.getFilteredTasks([], configuredTasks, providedTasks);
|
|
123
|
-
const groupedTasks = this.getGroupedTasksByWorkspaceFolder([...filteredConfiguredTasks, ...filteredProvidedTasks]);
|
|
124
|
-
if (groupedTasks.has(task_protocol_1.TaskScope.Global.toString())) {
|
|
125
|
-
const configs = groupedTasks.get(task_protocol_1.TaskScope.Global.toString());
|
|
126
|
-
this.items.push(...configs.map(taskConfig => {
|
|
127
|
-
const item = new TaskConfigureQuickOpenItem(token, taskConfig, this.taskService, this.taskNameResolver, this.workspaceService, isMulti);
|
|
128
|
-
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
|
|
129
|
-
return item;
|
|
130
|
-
}));
|
|
131
|
-
}
|
|
132
|
-
const rootUris = (await this.workspaceService.roots).map(rootStat => rootStat.resource.toString());
|
|
133
|
-
for (const rootFolder of rootUris) {
|
|
134
|
-
const folderName = new uri_1.default(rootFolder).displayName;
|
|
135
|
-
if (groupedTasks.has(rootFolder)) {
|
|
136
|
-
const configs = groupedTasks.get(rootFolder.toString());
|
|
137
|
-
this.items.push(...configs.map((taskConfig, index) => {
|
|
138
|
-
const item = new TaskConfigureQuickOpenItem(token, taskConfig, this.taskService, this.taskNameResolver, this.workspaceService, isMulti);
|
|
139
|
-
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
|
|
140
|
-
return item;
|
|
141
|
-
}));
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
const { configUri } = this.preferences.resolve('tasks', [], rootFolder);
|
|
145
|
-
const existTaskConfigFile = !!configUri;
|
|
146
|
-
this.items.push(({
|
|
147
|
-
label: existTaskConfigFile ? 'Open tasks.json file' : 'Create tasks.json file from template',
|
|
148
|
-
execute: () => {
|
|
149
|
-
setTimeout(() => this.taskConfigurationManager.openConfiguration(rootFolder));
|
|
150
|
-
}
|
|
151
|
-
}));
|
|
152
|
-
}
|
|
153
|
-
if (this.items.length > 0) {
|
|
154
|
-
this.items.unshift({
|
|
155
|
-
type: 'separator',
|
|
156
|
-
label: isMulti ? folderName : ''
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (this.items.length === 0) {
|
|
161
|
-
this.items.push(({
|
|
162
|
-
label: 'No tasks found'
|
|
163
|
-
}));
|
|
164
|
-
}
|
|
165
|
-
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, { placeholder: 'Select a task to configure' });
|
|
166
|
-
}
|
|
167
|
-
getTaskItems() {
|
|
168
|
-
return this.items.filter((item) => item.type !== 'separator' && item.task !== undefined);
|
|
169
|
-
}
|
|
170
|
-
async runBuildOrTestTask(buildOrTestType) {
|
|
171
|
-
var _a;
|
|
172
|
-
const shouldRunBuildTask = buildOrTestType === 'build';
|
|
173
|
-
const token = this.taskService.startUserAction();
|
|
174
|
-
await this.doInit(token);
|
|
175
|
-
const taskItems = this.getTaskItems();
|
|
176
|
-
if (taskItems.length > 0) { // the item in `this.items` is not 'No tasks found'
|
|
177
|
-
const buildOrTestTasks = taskItems.filter((t) => shouldRunBuildTask ? task_protocol_1.TaskCustomization.isBuildTask(t.task) : task_protocol_1.TaskCustomization.isTestTask(t.task));
|
|
178
|
-
if (buildOrTestTasks.length > 0) { // build / test tasks are defined in the workspace
|
|
179
|
-
const defaultBuildOrTestTasks = buildOrTestTasks.filter((t) => shouldRunBuildTask ? task_protocol_1.TaskCustomization.isDefaultBuildTask(t.task) : task_protocol_1.TaskCustomization.isDefaultTestTask(t.task));
|
|
180
|
-
if (defaultBuildOrTestTasks.length === 1) { // run the default build / test task
|
|
181
|
-
const defaultBuildOrTestTask = defaultBuildOrTestTasks[0];
|
|
182
|
-
const taskToRun = defaultBuildOrTestTask.task;
|
|
183
|
-
const scope = taskToRun._scope;
|
|
184
|
-
if (this.taskDefinitionRegistry && !!this.taskDefinitionRegistry.getDefinition(taskToRun)) {
|
|
185
|
-
this.taskService.run(token, taskToRun.source, taskToRun.label, scope);
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
this.taskService.run(token, taskToRun._source, taskToRun.label, scope);
|
|
189
|
-
}
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
// if default build / test task is not found, or there are more than one default,
|
|
193
|
-
// display the list of build /test tasks to let the user decide which to run
|
|
194
|
-
this.items = buildOrTestTasks;
|
|
195
|
-
}
|
|
196
|
-
else { // no build / test tasks, display an action item to configure the build / test task
|
|
197
|
-
this.items = [({
|
|
198
|
-
label: `No ${buildOrTestType} task to run found. Configure ${buildOrTestType.charAt(0).toUpperCase() + buildOrTestType.slice(1)} Task...`,
|
|
199
|
-
execute: () => {
|
|
200
|
-
this.doInit(token).then(() => {
|
|
201
|
-
var _a;
|
|
202
|
-
// update the `tasks.json` file, instead of running the task itself
|
|
203
|
-
this.items = this.getTaskItems().map((item) => new ConfigureBuildOrTestTaskQuickOpenItem(token, item.task, this.taskService, this.workspaceService.isMultiRootWorkspaceOpened, this.taskNameResolver, shouldRunBuildTask, this.taskConfigurationManager, this.taskDefinitionRegistry, this.taskSourceResolver));
|
|
204
|
-
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, { placeholder: `Select the task to be used as the default ${buildOrTestType} task` });
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
})];
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
else { // no tasks are currently present, prompt users if they'd like to configure a task.
|
|
211
|
-
this.items = [{
|
|
212
|
-
label: `No ${buildOrTestType} task to run found. Configure ${buildOrTestType.charAt(0).toUpperCase() + buildOrTestType.slice(1)} Task...`,
|
|
213
|
-
execute: () => this.configure()
|
|
214
|
-
}];
|
|
215
|
-
}
|
|
216
|
-
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, {
|
|
217
|
-
placeholder: `Select the ${buildOrTestType} task to run`,
|
|
218
|
-
onDidTriggerItemButton: ({ item }) => this.onDidTriggerGearIcon(item)
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
async getPicks(filter, token) {
|
|
222
|
-
if (this.items.length === 0) {
|
|
223
|
-
await this.init();
|
|
224
|
-
}
|
|
225
|
-
return (0, quick_input_service_1.filterItems)(this.items, filter);
|
|
226
|
-
}
|
|
227
|
-
registerQuickAccessProvider() {
|
|
228
|
-
this.quickAccessRegistry.registerQuickAccessProvider({
|
|
229
|
-
getInstance: () => this,
|
|
230
|
-
prefix: QuickOpenTask_1.PREFIX,
|
|
231
|
-
placeholder: 'Select the task to run',
|
|
232
|
-
helpEntries: [{ description: 'Run Task', needsEditor: false }]
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
getRunningTaskLabel(task) {
|
|
236
|
-
return `Task id: ${task.taskId}, label: ${task.config.label}`;
|
|
237
|
-
}
|
|
238
|
-
getItems(tasks, groupLabel, token, isMulti) {
|
|
239
|
-
const items = tasks.map(task => new TaskRunQuickOpenItem(token, task, this.taskService, isMulti, this.taskDefinitionRegistry, this.taskNameResolver, this.taskSourceResolver, this.taskConfigurationManager, [{
|
|
240
|
-
iconClass: 'codicon-gear',
|
|
241
|
-
tooltip: 'Configure Task',
|
|
242
|
-
}]));
|
|
243
|
-
if (items.length > 0) {
|
|
244
|
-
items.unshift({ type: 'separator', label: groupLabel });
|
|
245
|
-
}
|
|
246
|
-
return items;
|
|
247
|
-
}
|
|
248
|
-
getFilteredTasks(recentTasks, configuredTasks, providedTasks) {
|
|
249
|
-
const filteredRecentTasks = [];
|
|
250
|
-
recentTasks.forEach(recent => {
|
|
251
|
-
const originalTaskConfig = [...configuredTasks, ...providedTasks].find(t => this.taskDefinitionRegistry.compareTasks(recent, t));
|
|
252
|
-
if (originalTaskConfig) {
|
|
253
|
-
filteredRecentTasks.push(originalTaskConfig);
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
const filteredProvidedTasks = [];
|
|
257
|
-
providedTasks.forEach(provided => {
|
|
258
|
-
const exist = [...filteredRecentTasks, ...configuredTasks].some(t => this.taskDefinitionRegistry.compareTasks(provided, t));
|
|
259
|
-
if (!exist) {
|
|
260
|
-
filteredProvidedTasks.push(provided);
|
|
261
|
-
}
|
|
262
|
-
});
|
|
263
|
-
const filteredConfiguredTasks = [];
|
|
264
|
-
configuredTasks.forEach(configured => {
|
|
265
|
-
const exist = filteredRecentTasks.some(t => this.taskDefinitionRegistry.compareTasks(configured, t));
|
|
266
|
-
if (!exist) {
|
|
267
|
-
filteredConfiguredTasks.push(configured);
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
return {
|
|
271
|
-
filteredRecentTasks, filteredConfiguredTasks, filteredProvidedTasks
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
getGroupedTasksByWorkspaceFolder(tasks) {
|
|
275
|
-
const grouped = new Map();
|
|
276
|
-
for (const task of tasks) {
|
|
277
|
-
const scope = task._scope;
|
|
278
|
-
if (grouped.has(scope.toString())) {
|
|
279
|
-
grouped.get(scope.toString()).push(task);
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
grouped.set(scope.toString(), [task]);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
for (const taskConfigs of grouped.values()) {
|
|
286
|
-
taskConfigs.sort((t1, t2) => t1.label.localeCompare(t2.label));
|
|
287
|
-
}
|
|
288
|
-
return grouped;
|
|
289
|
-
}
|
|
290
|
-
};
|
|
291
|
-
QuickOpenTask.PREFIX = 'task ';
|
|
292
|
-
__decorate([
|
|
293
|
-
(0, inversify_1.inject)(task_service_1.TaskService),
|
|
294
|
-
__metadata("design:type", task_service_1.TaskService)
|
|
295
|
-
], QuickOpenTask.prototype, "taskService", void 0);
|
|
296
|
-
__decorate([
|
|
297
|
-
(0, inversify_1.inject)(browser_1.QuickInputService),
|
|
298
|
-
(0, inversify_1.optional)(),
|
|
299
|
-
__metadata("design:type", Object)
|
|
300
|
-
], QuickOpenTask.prototype, "quickInputService", void 0);
|
|
301
|
-
__decorate([
|
|
302
|
-
(0, inversify_1.inject)(browser_1.QuickAccessRegistry),
|
|
303
|
-
__metadata("design:type", Object)
|
|
304
|
-
], QuickOpenTask.prototype, "quickAccessRegistry", void 0);
|
|
305
|
-
__decorate([
|
|
306
|
-
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
307
|
-
__metadata("design:type", browser_2.WorkspaceService)
|
|
308
|
-
], QuickOpenTask.prototype, "workspaceService", void 0);
|
|
309
|
-
__decorate([
|
|
310
|
-
(0, inversify_1.inject)(task_definition_registry_1.TaskDefinitionRegistry),
|
|
311
|
-
__metadata("design:type", task_definition_registry_1.TaskDefinitionRegistry)
|
|
312
|
-
], QuickOpenTask.prototype, "taskDefinitionRegistry", void 0);
|
|
313
|
-
__decorate([
|
|
314
|
-
(0, inversify_1.inject)(task_name_resolver_1.TaskNameResolver),
|
|
315
|
-
__metadata("design:type", task_name_resolver_1.TaskNameResolver)
|
|
316
|
-
], QuickOpenTask.prototype, "taskNameResolver", void 0);
|
|
317
|
-
__decorate([
|
|
318
|
-
(0, inversify_1.inject)(task_source_resolver_1.TaskSourceResolver),
|
|
319
|
-
__metadata("design:type", task_source_resolver_1.TaskSourceResolver)
|
|
320
|
-
], QuickOpenTask.prototype, "taskSourceResolver", void 0);
|
|
321
|
-
__decorate([
|
|
322
|
-
(0, inversify_1.inject)(task_configuration_manager_1.TaskConfigurationManager),
|
|
323
|
-
__metadata("design:type", task_configuration_manager_1.TaskConfigurationManager)
|
|
324
|
-
], QuickOpenTask.prototype, "taskConfigurationManager", void 0);
|
|
325
|
-
__decorate([
|
|
326
|
-
(0, inversify_1.inject)(browser_1.PreferenceService),
|
|
327
|
-
__metadata("design:type", Object)
|
|
328
|
-
], QuickOpenTask.prototype, "preferences", void 0);
|
|
329
|
-
__decorate([
|
|
330
|
-
(0, inversify_1.inject)(browser_1.LabelProvider),
|
|
331
|
-
__metadata("design:type", browser_1.LabelProvider)
|
|
332
|
-
], QuickOpenTask.prototype, "labelProvider", void 0);
|
|
333
|
-
QuickOpenTask = QuickOpenTask_1 = __decorate([
|
|
334
|
-
(0, inversify_1.injectable)()
|
|
335
|
-
], QuickOpenTask);
|
|
336
|
-
exports.QuickOpenTask = QuickOpenTask;
|
|
337
|
-
class TaskRunQuickOpenItem {
|
|
338
|
-
constructor(token, task, taskService, isMulti, taskDefinitionRegistry, taskNameResolver, taskSourceResolver, taskConfigurationManager, buttons) {
|
|
339
|
-
this.token = token;
|
|
340
|
-
this.task = task;
|
|
341
|
-
this.taskService = taskService;
|
|
342
|
-
this.isMulti = isMulti;
|
|
343
|
-
this.taskDefinitionRegistry = taskDefinitionRegistry;
|
|
344
|
-
this.taskNameResolver = taskNameResolver;
|
|
345
|
-
this.taskSourceResolver = taskSourceResolver;
|
|
346
|
-
this.taskConfigurationManager = taskConfigurationManager;
|
|
347
|
-
this.buttons = buttons;
|
|
348
|
-
}
|
|
349
|
-
get label() {
|
|
350
|
-
return this.taskNameResolver.resolve(this.task);
|
|
351
|
-
}
|
|
352
|
-
get description() {
|
|
353
|
-
return renderScope(this.task._scope, this.isMulti);
|
|
354
|
-
}
|
|
355
|
-
get detail() {
|
|
356
|
-
return this.task.detail;
|
|
357
|
-
}
|
|
358
|
-
execute() {
|
|
359
|
-
const scope = this.task._scope;
|
|
360
|
-
if (this.taskDefinitionRegistry && !!this.taskDefinitionRegistry.getDefinition(this.task)) {
|
|
361
|
-
this.taskService.run(this.token, this.task.source || this.task._source, this.task.label, scope);
|
|
362
|
-
}
|
|
363
|
-
else {
|
|
364
|
-
this.taskService.run(this.token, this.task._source, this.task.label, scope);
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
trigger() {
|
|
368
|
-
this.taskService.configure(this.token, this.task);
|
|
369
|
-
return pickerQuickAccess_1.TriggerAction.CLOSE_PICKER;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
exports.TaskRunQuickOpenItem = TaskRunQuickOpenItem;
|
|
373
|
-
class ConfigureBuildOrTestTaskQuickOpenItem extends TaskRunQuickOpenItem {
|
|
374
|
-
constructor(token, task, taskService, isMulti, taskNameResolver, isBuildTask, taskConfigurationManager, taskDefinitionRegistry, taskSourceResolver) {
|
|
375
|
-
super(token, task, taskService, isMulti, taskDefinitionRegistry, taskNameResolver, taskSourceResolver, taskConfigurationManager);
|
|
376
|
-
this.isBuildTask = isBuildTask;
|
|
377
|
-
}
|
|
378
|
-
execute() {
|
|
379
|
-
this.taskService.updateTaskConfiguration(this.token, this.task, { group: { kind: this.isBuildTask ? 'build' : 'test', isDefault: true } })
|
|
380
|
-
.then(() => {
|
|
381
|
-
if (this.task._scope) {
|
|
382
|
-
this.taskConfigurationManager.openConfiguration(this.task._scope);
|
|
383
|
-
}
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
exports.ConfigureBuildOrTestTaskQuickOpenItem = ConfigureBuildOrTestTaskQuickOpenItem;
|
|
388
|
-
function renderScope(scope, isMulti) {
|
|
389
|
-
if (typeof scope === 'string') {
|
|
390
|
-
if (isMulti) {
|
|
391
|
-
return new uri_1.default(scope).displayName;
|
|
392
|
-
}
|
|
393
|
-
else {
|
|
394
|
-
return '';
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
return task_protocol_1.TaskScope[scope];
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
class TaskConfigureQuickOpenItem {
|
|
402
|
-
constructor(token, task, taskService, taskNameResolver, workspaceService, isMulti) {
|
|
403
|
-
this.token = token;
|
|
404
|
-
this.task = task;
|
|
405
|
-
this.taskService = taskService;
|
|
406
|
-
this.taskNameResolver = taskNameResolver;
|
|
407
|
-
this.workspaceService = workspaceService;
|
|
408
|
-
this.isMulti = isMulti;
|
|
409
|
-
const stat = this.workspaceService.workspace;
|
|
410
|
-
this.isMulti = stat ? !stat.isDirectory : false;
|
|
411
|
-
}
|
|
412
|
-
get label() {
|
|
413
|
-
return this.taskNameResolver.resolve(this.task);
|
|
414
|
-
}
|
|
415
|
-
get description() {
|
|
416
|
-
return renderScope(this.task._scope, this.isMulti);
|
|
417
|
-
}
|
|
418
|
-
accept() {
|
|
419
|
-
this.execute();
|
|
420
|
-
}
|
|
421
|
-
execute() {
|
|
422
|
-
this.taskService.configure(this.token, this.task);
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
exports.TaskConfigureQuickOpenItem = TaskConfigureQuickOpenItem;
|
|
426
|
-
let TaskTerminateQuickOpen = class TaskTerminateQuickOpen {
|
|
427
|
-
async getItems() {
|
|
428
|
-
const items = [];
|
|
429
|
-
const runningTasks = await this.taskService.getRunningTasks();
|
|
430
|
-
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
431
|
-
if (runningTasks.length <= 0) {
|
|
432
|
-
items.push(({
|
|
433
|
-
label: 'No task is currently running',
|
|
434
|
-
}));
|
|
435
|
-
}
|
|
436
|
-
else {
|
|
437
|
-
runningTasks.forEach((task) => {
|
|
438
|
-
items.push(new RunningTaskQuickOpenItem(task, this.taskService, this.taskNameResolver, this.taskSourceResolver, this.taskDefinitionRegistry, this.labelProvider, isMulti, () => this.taskService.kill(task.taskId)));
|
|
439
|
-
});
|
|
440
|
-
if (runningTasks.length > 1) {
|
|
441
|
-
items.push(({
|
|
442
|
-
label: 'All running tasks',
|
|
443
|
-
execute: () => {
|
|
444
|
-
runningTasks.forEach((t) => {
|
|
445
|
-
this.taskService.kill(t.taskId);
|
|
446
|
-
});
|
|
447
|
-
}
|
|
448
|
-
}));
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
return items;
|
|
452
|
-
}
|
|
453
|
-
async open() {
|
|
454
|
-
var _a;
|
|
455
|
-
const items = await this.getItems();
|
|
456
|
-
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(items, { placeholder: 'Select task to terminate' });
|
|
457
|
-
}
|
|
458
|
-
};
|
|
459
|
-
__decorate([
|
|
460
|
-
(0, inversify_1.inject)(browser_1.LabelProvider),
|
|
461
|
-
__metadata("design:type", browser_1.LabelProvider)
|
|
462
|
-
], TaskTerminateQuickOpen.prototype, "labelProvider", void 0);
|
|
463
|
-
__decorate([
|
|
464
|
-
(0, inversify_1.inject)(browser_1.QuickInputService),
|
|
465
|
-
(0, inversify_1.optional)(),
|
|
466
|
-
__metadata("design:type", Object)
|
|
467
|
-
], TaskTerminateQuickOpen.prototype, "quickInputService", void 0);
|
|
468
|
-
__decorate([
|
|
469
|
-
(0, inversify_1.inject)(task_definition_registry_1.TaskDefinitionRegistry),
|
|
470
|
-
__metadata("design:type", task_definition_registry_1.TaskDefinitionRegistry)
|
|
471
|
-
], TaskTerminateQuickOpen.prototype, "taskDefinitionRegistry", void 0);
|
|
472
|
-
__decorate([
|
|
473
|
-
(0, inversify_1.inject)(task_name_resolver_1.TaskNameResolver),
|
|
474
|
-
__metadata("design:type", task_name_resolver_1.TaskNameResolver)
|
|
475
|
-
], TaskTerminateQuickOpen.prototype, "taskNameResolver", void 0);
|
|
476
|
-
__decorate([
|
|
477
|
-
(0, inversify_1.inject)(task_source_resolver_1.TaskSourceResolver),
|
|
478
|
-
__metadata("design:type", task_source_resolver_1.TaskSourceResolver)
|
|
479
|
-
], TaskTerminateQuickOpen.prototype, "taskSourceResolver", void 0);
|
|
480
|
-
__decorate([
|
|
481
|
-
(0, inversify_1.inject)(task_service_1.TaskService),
|
|
482
|
-
__metadata("design:type", task_service_1.TaskService)
|
|
483
|
-
], TaskTerminateQuickOpen.prototype, "taskService", void 0);
|
|
484
|
-
__decorate([
|
|
485
|
-
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
486
|
-
__metadata("design:type", browser_2.WorkspaceService)
|
|
487
|
-
], TaskTerminateQuickOpen.prototype, "workspaceService", void 0);
|
|
488
|
-
TaskTerminateQuickOpen = __decorate([
|
|
489
|
-
(0, inversify_1.injectable)()
|
|
490
|
-
], TaskTerminateQuickOpen);
|
|
491
|
-
exports.TaskTerminateQuickOpen = TaskTerminateQuickOpen;
|
|
492
|
-
let TaskRunningQuickOpen = class TaskRunningQuickOpen {
|
|
493
|
-
async getItems() {
|
|
494
|
-
const items = [];
|
|
495
|
-
const runningTasks = await this.taskService.getRunningTasks();
|
|
496
|
-
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
497
|
-
if (runningTasks.length <= 0) {
|
|
498
|
-
items.push(({
|
|
499
|
-
label: 'No task is currently running',
|
|
500
|
-
}));
|
|
501
|
-
}
|
|
502
|
-
else {
|
|
503
|
-
runningTasks.forEach((task) => {
|
|
504
|
-
items.push(new RunningTaskQuickOpenItem(task, this.taskService, this.taskNameResolver, this.taskSourceResolver, this.taskDefinitionRegistry, this.labelProvider, isMulti, () => {
|
|
505
|
-
if (task.terminalId) {
|
|
506
|
-
const terminal = this.terminalService.getByTerminalId(task.terminalId);
|
|
507
|
-
if (terminal) {
|
|
508
|
-
this.terminalService.open(terminal);
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
}));
|
|
512
|
-
});
|
|
513
|
-
}
|
|
514
|
-
return items;
|
|
515
|
-
}
|
|
516
|
-
async open() {
|
|
517
|
-
var _a;
|
|
518
|
-
const items = await this.getItems();
|
|
519
|
-
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(items, { placeholder: 'Select the task to show its output' });
|
|
520
|
-
}
|
|
521
|
-
};
|
|
522
|
-
__decorate([
|
|
523
|
-
(0, inversify_1.inject)(browser_1.LabelProvider),
|
|
524
|
-
__metadata("design:type", browser_1.LabelProvider)
|
|
525
|
-
], TaskRunningQuickOpen.prototype, "labelProvider", void 0);
|
|
526
|
-
__decorate([
|
|
527
|
-
(0, inversify_1.inject)(browser_1.QuickInputService),
|
|
528
|
-
(0, inversify_1.optional)(),
|
|
529
|
-
__metadata("design:type", Object)
|
|
530
|
-
], TaskRunningQuickOpen.prototype, "quickInputService", void 0);
|
|
531
|
-
__decorate([
|
|
532
|
-
(0, inversify_1.inject)(task_definition_registry_1.TaskDefinitionRegistry),
|
|
533
|
-
__metadata("design:type", task_definition_registry_1.TaskDefinitionRegistry)
|
|
534
|
-
], TaskRunningQuickOpen.prototype, "taskDefinitionRegistry", void 0);
|
|
535
|
-
__decorate([
|
|
536
|
-
(0, inversify_1.inject)(task_name_resolver_1.TaskNameResolver),
|
|
537
|
-
__metadata("design:type", task_name_resolver_1.TaskNameResolver)
|
|
538
|
-
], TaskRunningQuickOpen.prototype, "taskNameResolver", void 0);
|
|
539
|
-
__decorate([
|
|
540
|
-
(0, inversify_1.inject)(task_source_resolver_1.TaskSourceResolver),
|
|
541
|
-
__metadata("design:type", task_source_resolver_1.TaskSourceResolver)
|
|
542
|
-
], TaskRunningQuickOpen.prototype, "taskSourceResolver", void 0);
|
|
543
|
-
__decorate([
|
|
544
|
-
(0, inversify_1.inject)(task_service_1.TaskService),
|
|
545
|
-
__metadata("design:type", task_service_1.TaskService)
|
|
546
|
-
], TaskRunningQuickOpen.prototype, "taskService", void 0);
|
|
547
|
-
__decorate([
|
|
548
|
-
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
549
|
-
__metadata("design:type", browser_2.WorkspaceService)
|
|
550
|
-
], TaskRunningQuickOpen.prototype, "workspaceService", void 0);
|
|
551
|
-
__decorate([
|
|
552
|
-
(0, inversify_1.inject)(terminal_service_1.TerminalService),
|
|
553
|
-
__metadata("design:type", Object)
|
|
554
|
-
], TaskRunningQuickOpen.prototype, "terminalService", void 0);
|
|
555
|
-
TaskRunningQuickOpen = __decorate([
|
|
556
|
-
(0, inversify_1.injectable)()
|
|
557
|
-
], TaskRunningQuickOpen);
|
|
558
|
-
exports.TaskRunningQuickOpen = TaskRunningQuickOpen;
|
|
559
|
-
class RunningTaskQuickOpenItem {
|
|
560
|
-
constructor(taskInfo, taskService, taskNameResolver, taskSourceResolver, taskDefinitionRegistry, labelProvider, isMulti, execute) {
|
|
561
|
-
this.taskInfo = taskInfo;
|
|
562
|
-
this.taskService = taskService;
|
|
563
|
-
this.taskNameResolver = taskNameResolver;
|
|
564
|
-
this.taskSourceResolver = taskSourceResolver;
|
|
565
|
-
this.taskDefinitionRegistry = taskDefinitionRegistry;
|
|
566
|
-
this.labelProvider = labelProvider;
|
|
567
|
-
this.isMulti = isMulti;
|
|
568
|
-
this.execute = execute;
|
|
569
|
-
}
|
|
570
|
-
get label() {
|
|
571
|
-
return this.taskNameResolver.resolve(this.taskInfo.config);
|
|
572
|
-
}
|
|
573
|
-
get description() {
|
|
574
|
-
return renderScope(this.taskInfo.config._scope, this.isMulti);
|
|
575
|
-
}
|
|
576
|
-
get detail() {
|
|
577
|
-
return this.taskInfo.config.detail;
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
exports.RunningTaskQuickOpenItem = RunningTaskQuickOpenItem;
|
|
581
|
-
let TaskRestartRunningQuickOpen = class TaskRestartRunningQuickOpen {
|
|
582
|
-
async getItems() {
|
|
583
|
-
const items = [];
|
|
584
|
-
const runningTasks = await this.taskService.getRunningTasks();
|
|
585
|
-
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
586
|
-
if (runningTasks.length <= 0) {
|
|
587
|
-
items.push({
|
|
588
|
-
label: 'No task to restart'
|
|
589
|
-
});
|
|
590
|
-
}
|
|
591
|
-
else {
|
|
592
|
-
runningTasks.forEach((task) => {
|
|
593
|
-
items.push(new RunningTaskQuickOpenItem(task, this.taskService, this.taskNameResolver, this.taskSourceResolver, this.taskDefinitionRegistry, this.labelProvider, isMulti, () => this.taskService.restartTask(task)));
|
|
594
|
-
});
|
|
595
|
-
}
|
|
596
|
-
return items;
|
|
597
|
-
}
|
|
598
|
-
async open() {
|
|
599
|
-
var _a;
|
|
600
|
-
const items = await this.getItems();
|
|
601
|
-
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(items, { placeholder: 'Select task to restart' });
|
|
602
|
-
}
|
|
603
|
-
};
|
|
604
|
-
__decorate([
|
|
605
|
-
(0, inversify_1.inject)(browser_1.LabelProvider),
|
|
606
|
-
__metadata("design:type", browser_1.LabelProvider)
|
|
607
|
-
], TaskRestartRunningQuickOpen.prototype, "labelProvider", void 0);
|
|
608
|
-
__decorate([
|
|
609
|
-
(0, inversify_1.inject)(browser_1.QuickInputService),
|
|
610
|
-
(0, inversify_1.optional)(),
|
|
611
|
-
__metadata("design:type", Object)
|
|
612
|
-
], TaskRestartRunningQuickOpen.prototype, "quickInputService", void 0);
|
|
613
|
-
__decorate([
|
|
614
|
-
(0, inversify_1.inject)(task_definition_registry_1.TaskDefinitionRegistry),
|
|
615
|
-
__metadata("design:type", task_definition_registry_1.TaskDefinitionRegistry)
|
|
616
|
-
], TaskRestartRunningQuickOpen.prototype, "taskDefinitionRegistry", void 0);
|
|
617
|
-
__decorate([
|
|
618
|
-
(0, inversify_1.inject)(task_name_resolver_1.TaskNameResolver),
|
|
619
|
-
__metadata("design:type", task_name_resolver_1.TaskNameResolver)
|
|
620
|
-
], TaskRestartRunningQuickOpen.prototype, "taskNameResolver", void 0);
|
|
621
|
-
__decorate([
|
|
622
|
-
(0, inversify_1.inject)(task_source_resolver_1.TaskSourceResolver),
|
|
623
|
-
__metadata("design:type", task_source_resolver_1.TaskSourceResolver)
|
|
624
|
-
], TaskRestartRunningQuickOpen.prototype, "taskSourceResolver", void 0);
|
|
625
|
-
__decorate([
|
|
626
|
-
(0, inversify_1.inject)(task_service_1.TaskService),
|
|
627
|
-
__metadata("design:type", task_service_1.TaskService)
|
|
628
|
-
], TaskRestartRunningQuickOpen.prototype, "taskService", void 0);
|
|
629
|
-
__decorate([
|
|
630
|
-
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
631
|
-
__metadata("design:type", browser_2.WorkspaceService)
|
|
632
|
-
], TaskRestartRunningQuickOpen.prototype, "workspaceService", void 0);
|
|
633
|
-
TaskRestartRunningQuickOpen = __decorate([
|
|
634
|
-
(0, inversify_1.injectable)()
|
|
635
|
-
], TaskRestartRunningQuickOpen);
|
|
636
|
-
exports.TaskRestartRunningQuickOpen = TaskRestartRunningQuickOpen;
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2017 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
+
};
|
|
23
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
+
};
|
|
26
|
+
var QuickOpenTask_1;
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.TaskRestartRunningQuickOpen = exports.RunningTaskQuickOpenItem = exports.TaskRunningQuickOpen = exports.TaskTerminateQuickOpen = exports.TaskConfigureQuickOpenItem = exports.ConfigureBuildOrTestTaskQuickOpenItem = exports.TaskRunQuickOpenItem = exports.QuickOpenTask = exports.ConfigureTaskAction = void 0;
|
|
29
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
30
|
+
const task_service_1 = require("./task-service");
|
|
31
|
+
const task_protocol_1 = require("../common/task-protocol");
|
|
32
|
+
const task_definition_registry_1 = require("./task-definition-registry");
|
|
33
|
+
const uri_1 = require("@theia/core/lib/common/uri");
|
|
34
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
35
|
+
const browser_2 = require("@theia/workspace/lib/browser");
|
|
36
|
+
const terminal_service_1 = require("@theia/terminal/lib/browser/base/terminal-service");
|
|
37
|
+
const task_name_resolver_1 = require("./task-name-resolver");
|
|
38
|
+
const task_source_resolver_1 = require("./task-source-resolver");
|
|
39
|
+
const task_configuration_manager_1 = require("./task-configuration-manager");
|
|
40
|
+
const quick_input_service_1 = require("@theia/core/lib/browser/quick-input/quick-input-service");
|
|
41
|
+
const pickerQuickAccess_1 = require("@theia/monaco-editor-core/esm/vs/platform/quickinput/browser/pickerQuickAccess");
|
|
42
|
+
var ConfigureTaskAction;
|
|
43
|
+
(function (ConfigureTaskAction) {
|
|
44
|
+
ConfigureTaskAction.ID = 'workbench.action.tasks.configureTaskRunner';
|
|
45
|
+
ConfigureTaskAction.TEXT = 'Configure Task';
|
|
46
|
+
})(ConfigureTaskAction = exports.ConfigureTaskAction || (exports.ConfigureTaskAction = {}));
|
|
47
|
+
let QuickOpenTask = QuickOpenTask_1 = class QuickOpenTask {
|
|
48
|
+
constructor() {
|
|
49
|
+
this.description = 'Run Task';
|
|
50
|
+
this.items = [];
|
|
51
|
+
}
|
|
52
|
+
init() {
|
|
53
|
+
return this.doInit(this.taskService.startUserAction());
|
|
54
|
+
}
|
|
55
|
+
async doInit(token) {
|
|
56
|
+
const recentTasks = this.taskService.recentTasks;
|
|
57
|
+
const configuredTasks = await this.taskService.getConfiguredTasks(token);
|
|
58
|
+
const providedTasks = await this.taskService.getProvidedTasks(token);
|
|
59
|
+
const { filteredRecentTasks, filteredConfiguredTasks, filteredProvidedTasks } = this.getFilteredTasks(recentTasks, configuredTasks, providedTasks);
|
|
60
|
+
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
61
|
+
this.items = [];
|
|
62
|
+
const filteredRecentTasksItems = this.getItems(filteredRecentTasks, 'recently used tasks', token, isMulti);
|
|
63
|
+
const filteredConfiguredTasksItems = this.getItems(filteredConfiguredTasks, 'configured tasks', token, isMulti);
|
|
64
|
+
const filteredProvidedTasksItems = this.getItems(filteredProvidedTasks, 'detected tasks', token, isMulti);
|
|
65
|
+
this.items.push(...filteredRecentTasksItems, ...filteredConfiguredTasksItems, ...filteredProvidedTasksItems);
|
|
66
|
+
}
|
|
67
|
+
onDidTriggerGearIcon(item) {
|
|
68
|
+
if (item instanceof TaskRunQuickOpenItem) {
|
|
69
|
+
this.taskService.configure(item.token, item.task);
|
|
70
|
+
this.quickInputService.hide();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async open() {
|
|
74
|
+
var _a;
|
|
75
|
+
await this.init();
|
|
76
|
+
if (!this.items.length) {
|
|
77
|
+
this.items.push(({
|
|
78
|
+
label: 'No task to run found. Configure Tasks...',
|
|
79
|
+
execute: () => this.configure()
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, {
|
|
83
|
+
placeholder: 'Select the task to run',
|
|
84
|
+
onDidTriggerItemButton: ({ item }) => this.onDidTriggerGearIcon(item)
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
attach() {
|
|
88
|
+
this.items = [];
|
|
89
|
+
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
90
|
+
this.taskService.getRunningTasks().then(tasks => {
|
|
91
|
+
var _a;
|
|
92
|
+
if (!tasks.length) {
|
|
93
|
+
this.items.push({
|
|
94
|
+
label: 'No tasks found',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
tasks.forEach((task) => {
|
|
99
|
+
// can only attach to terminal processes, so only list those
|
|
100
|
+
if (task.terminalId) {
|
|
101
|
+
this.items.push(new RunningTaskQuickOpenItem(task, this.taskService, this.taskNameResolver, this.taskSourceResolver, this.taskDefinitionRegistry, this.labelProvider, isMulti, () => this.taskService.attach(task.terminalId, task)));
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (this.items.length === 0) {
|
|
106
|
+
this.items.push(({
|
|
107
|
+
label: 'No tasks found'
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, { placeholder: 'Choose task to open' });
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
async configure() {
|
|
114
|
+
var _a;
|
|
115
|
+
this.items = [];
|
|
116
|
+
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
117
|
+
const token = this.taskService.startUserAction();
|
|
118
|
+
const configuredTasks = await this.taskService.getConfiguredTasks(token);
|
|
119
|
+
const providedTasks = await this.taskService.getProvidedTasks(token);
|
|
120
|
+
// check if tasks.json exists. If not, display "Create tasks.json file from template"
|
|
121
|
+
// If tasks.json exists and empty, display 'Open tasks.json file'
|
|
122
|
+
const { filteredConfiguredTasks, filteredProvidedTasks } = this.getFilteredTasks([], configuredTasks, providedTasks);
|
|
123
|
+
const groupedTasks = this.getGroupedTasksByWorkspaceFolder([...filteredConfiguredTasks, ...filteredProvidedTasks]);
|
|
124
|
+
if (groupedTasks.has(task_protocol_1.TaskScope.Global.toString())) {
|
|
125
|
+
const configs = groupedTasks.get(task_protocol_1.TaskScope.Global.toString());
|
|
126
|
+
this.items.push(...configs.map(taskConfig => {
|
|
127
|
+
const item = new TaskConfigureQuickOpenItem(token, taskConfig, this.taskService, this.taskNameResolver, this.workspaceService, isMulti);
|
|
128
|
+
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
|
|
129
|
+
return item;
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
const rootUris = (await this.workspaceService.roots).map(rootStat => rootStat.resource.toString());
|
|
133
|
+
for (const rootFolder of rootUris) {
|
|
134
|
+
const folderName = new uri_1.default(rootFolder).displayName;
|
|
135
|
+
if (groupedTasks.has(rootFolder)) {
|
|
136
|
+
const configs = groupedTasks.get(rootFolder.toString());
|
|
137
|
+
this.items.push(...configs.map((taskConfig, index) => {
|
|
138
|
+
const item = new TaskConfigureQuickOpenItem(token, taskConfig, this.taskService, this.taskNameResolver, this.workspaceService, isMulti);
|
|
139
|
+
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
|
|
140
|
+
return item;
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
const { configUri } = this.preferences.resolve('tasks', [], rootFolder);
|
|
145
|
+
const existTaskConfigFile = !!configUri;
|
|
146
|
+
this.items.push(({
|
|
147
|
+
label: existTaskConfigFile ? 'Open tasks.json file' : 'Create tasks.json file from template',
|
|
148
|
+
execute: () => {
|
|
149
|
+
setTimeout(() => this.taskConfigurationManager.openConfiguration(rootFolder));
|
|
150
|
+
}
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
if (this.items.length > 0) {
|
|
154
|
+
this.items.unshift({
|
|
155
|
+
type: 'separator',
|
|
156
|
+
label: isMulti ? folderName : ''
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (this.items.length === 0) {
|
|
161
|
+
this.items.push(({
|
|
162
|
+
label: 'No tasks found'
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, { placeholder: 'Select a task to configure' });
|
|
166
|
+
}
|
|
167
|
+
getTaskItems() {
|
|
168
|
+
return this.items.filter((item) => item.type !== 'separator' && item.task !== undefined);
|
|
169
|
+
}
|
|
170
|
+
async runBuildOrTestTask(buildOrTestType) {
|
|
171
|
+
var _a;
|
|
172
|
+
const shouldRunBuildTask = buildOrTestType === 'build';
|
|
173
|
+
const token = this.taskService.startUserAction();
|
|
174
|
+
await this.doInit(token);
|
|
175
|
+
const taskItems = this.getTaskItems();
|
|
176
|
+
if (taskItems.length > 0) { // the item in `this.items` is not 'No tasks found'
|
|
177
|
+
const buildOrTestTasks = taskItems.filter((t) => shouldRunBuildTask ? task_protocol_1.TaskCustomization.isBuildTask(t.task) : task_protocol_1.TaskCustomization.isTestTask(t.task));
|
|
178
|
+
if (buildOrTestTasks.length > 0) { // build / test tasks are defined in the workspace
|
|
179
|
+
const defaultBuildOrTestTasks = buildOrTestTasks.filter((t) => shouldRunBuildTask ? task_protocol_1.TaskCustomization.isDefaultBuildTask(t.task) : task_protocol_1.TaskCustomization.isDefaultTestTask(t.task));
|
|
180
|
+
if (defaultBuildOrTestTasks.length === 1) { // run the default build / test task
|
|
181
|
+
const defaultBuildOrTestTask = defaultBuildOrTestTasks[0];
|
|
182
|
+
const taskToRun = defaultBuildOrTestTask.task;
|
|
183
|
+
const scope = taskToRun._scope;
|
|
184
|
+
if (this.taskDefinitionRegistry && !!this.taskDefinitionRegistry.getDefinition(taskToRun)) {
|
|
185
|
+
this.taskService.run(token, taskToRun.source, taskToRun.label, scope);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.taskService.run(token, taskToRun._source, taskToRun.label, scope);
|
|
189
|
+
}
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
// if default build / test task is not found, or there are more than one default,
|
|
193
|
+
// display the list of build /test tasks to let the user decide which to run
|
|
194
|
+
this.items = buildOrTestTasks;
|
|
195
|
+
}
|
|
196
|
+
else { // no build / test tasks, display an action item to configure the build / test task
|
|
197
|
+
this.items = [({
|
|
198
|
+
label: `No ${buildOrTestType} task to run found. Configure ${buildOrTestType.charAt(0).toUpperCase() + buildOrTestType.slice(1)} Task...`,
|
|
199
|
+
execute: () => {
|
|
200
|
+
this.doInit(token).then(() => {
|
|
201
|
+
var _a;
|
|
202
|
+
// update the `tasks.json` file, instead of running the task itself
|
|
203
|
+
this.items = this.getTaskItems().map((item) => new ConfigureBuildOrTestTaskQuickOpenItem(token, item.task, this.taskService, this.workspaceService.isMultiRootWorkspaceOpened, this.taskNameResolver, shouldRunBuildTask, this.taskConfigurationManager, this.taskDefinitionRegistry, this.taskSourceResolver));
|
|
204
|
+
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, { placeholder: `Select the task to be used as the default ${buildOrTestType} task` });
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
})];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else { // no tasks are currently present, prompt users if they'd like to configure a task.
|
|
211
|
+
this.items = [{
|
|
212
|
+
label: `No ${buildOrTestType} task to run found. Configure ${buildOrTestType.charAt(0).toUpperCase() + buildOrTestType.slice(1)} Task...`,
|
|
213
|
+
execute: () => this.configure()
|
|
214
|
+
}];
|
|
215
|
+
}
|
|
216
|
+
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(this.items, {
|
|
217
|
+
placeholder: `Select the ${buildOrTestType} task to run`,
|
|
218
|
+
onDidTriggerItemButton: ({ item }) => this.onDidTriggerGearIcon(item)
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
async getPicks(filter, token) {
|
|
222
|
+
if (this.items.length === 0) {
|
|
223
|
+
await this.init();
|
|
224
|
+
}
|
|
225
|
+
return (0, quick_input_service_1.filterItems)(this.items, filter);
|
|
226
|
+
}
|
|
227
|
+
registerQuickAccessProvider() {
|
|
228
|
+
this.quickAccessRegistry.registerQuickAccessProvider({
|
|
229
|
+
getInstance: () => this,
|
|
230
|
+
prefix: QuickOpenTask_1.PREFIX,
|
|
231
|
+
placeholder: 'Select the task to run',
|
|
232
|
+
helpEntries: [{ description: 'Run Task', needsEditor: false }]
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
getRunningTaskLabel(task) {
|
|
236
|
+
return `Task id: ${task.taskId}, label: ${task.config.label}`;
|
|
237
|
+
}
|
|
238
|
+
getItems(tasks, groupLabel, token, isMulti) {
|
|
239
|
+
const items = tasks.map(task => new TaskRunQuickOpenItem(token, task, this.taskService, isMulti, this.taskDefinitionRegistry, this.taskNameResolver, this.taskSourceResolver, this.taskConfigurationManager, [{
|
|
240
|
+
iconClass: 'codicon-gear',
|
|
241
|
+
tooltip: 'Configure Task',
|
|
242
|
+
}]));
|
|
243
|
+
if (items.length > 0) {
|
|
244
|
+
items.unshift({ type: 'separator', label: groupLabel });
|
|
245
|
+
}
|
|
246
|
+
return items;
|
|
247
|
+
}
|
|
248
|
+
getFilteredTasks(recentTasks, configuredTasks, providedTasks) {
|
|
249
|
+
const filteredRecentTasks = [];
|
|
250
|
+
recentTasks.forEach(recent => {
|
|
251
|
+
const originalTaskConfig = [...configuredTasks, ...providedTasks].find(t => this.taskDefinitionRegistry.compareTasks(recent, t));
|
|
252
|
+
if (originalTaskConfig) {
|
|
253
|
+
filteredRecentTasks.push(originalTaskConfig);
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
const filteredProvidedTasks = [];
|
|
257
|
+
providedTasks.forEach(provided => {
|
|
258
|
+
const exist = [...filteredRecentTasks, ...configuredTasks].some(t => this.taskDefinitionRegistry.compareTasks(provided, t));
|
|
259
|
+
if (!exist) {
|
|
260
|
+
filteredProvidedTasks.push(provided);
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
const filteredConfiguredTasks = [];
|
|
264
|
+
configuredTasks.forEach(configured => {
|
|
265
|
+
const exist = filteredRecentTasks.some(t => this.taskDefinitionRegistry.compareTasks(configured, t));
|
|
266
|
+
if (!exist) {
|
|
267
|
+
filteredConfiguredTasks.push(configured);
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
return {
|
|
271
|
+
filteredRecentTasks, filteredConfiguredTasks, filteredProvidedTasks
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
getGroupedTasksByWorkspaceFolder(tasks) {
|
|
275
|
+
const grouped = new Map();
|
|
276
|
+
for (const task of tasks) {
|
|
277
|
+
const scope = task._scope;
|
|
278
|
+
if (grouped.has(scope.toString())) {
|
|
279
|
+
grouped.get(scope.toString()).push(task);
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
grouped.set(scope.toString(), [task]);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
for (const taskConfigs of grouped.values()) {
|
|
286
|
+
taskConfigs.sort((t1, t2) => t1.label.localeCompare(t2.label));
|
|
287
|
+
}
|
|
288
|
+
return grouped;
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
QuickOpenTask.PREFIX = 'task ';
|
|
292
|
+
__decorate([
|
|
293
|
+
(0, inversify_1.inject)(task_service_1.TaskService),
|
|
294
|
+
__metadata("design:type", task_service_1.TaskService)
|
|
295
|
+
], QuickOpenTask.prototype, "taskService", void 0);
|
|
296
|
+
__decorate([
|
|
297
|
+
(0, inversify_1.inject)(browser_1.QuickInputService),
|
|
298
|
+
(0, inversify_1.optional)(),
|
|
299
|
+
__metadata("design:type", Object)
|
|
300
|
+
], QuickOpenTask.prototype, "quickInputService", void 0);
|
|
301
|
+
__decorate([
|
|
302
|
+
(0, inversify_1.inject)(browser_1.QuickAccessRegistry),
|
|
303
|
+
__metadata("design:type", Object)
|
|
304
|
+
], QuickOpenTask.prototype, "quickAccessRegistry", void 0);
|
|
305
|
+
__decorate([
|
|
306
|
+
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
307
|
+
__metadata("design:type", browser_2.WorkspaceService)
|
|
308
|
+
], QuickOpenTask.prototype, "workspaceService", void 0);
|
|
309
|
+
__decorate([
|
|
310
|
+
(0, inversify_1.inject)(task_definition_registry_1.TaskDefinitionRegistry),
|
|
311
|
+
__metadata("design:type", task_definition_registry_1.TaskDefinitionRegistry)
|
|
312
|
+
], QuickOpenTask.prototype, "taskDefinitionRegistry", void 0);
|
|
313
|
+
__decorate([
|
|
314
|
+
(0, inversify_1.inject)(task_name_resolver_1.TaskNameResolver),
|
|
315
|
+
__metadata("design:type", task_name_resolver_1.TaskNameResolver)
|
|
316
|
+
], QuickOpenTask.prototype, "taskNameResolver", void 0);
|
|
317
|
+
__decorate([
|
|
318
|
+
(0, inversify_1.inject)(task_source_resolver_1.TaskSourceResolver),
|
|
319
|
+
__metadata("design:type", task_source_resolver_1.TaskSourceResolver)
|
|
320
|
+
], QuickOpenTask.prototype, "taskSourceResolver", void 0);
|
|
321
|
+
__decorate([
|
|
322
|
+
(0, inversify_1.inject)(task_configuration_manager_1.TaskConfigurationManager),
|
|
323
|
+
__metadata("design:type", task_configuration_manager_1.TaskConfigurationManager)
|
|
324
|
+
], QuickOpenTask.prototype, "taskConfigurationManager", void 0);
|
|
325
|
+
__decorate([
|
|
326
|
+
(0, inversify_1.inject)(browser_1.PreferenceService),
|
|
327
|
+
__metadata("design:type", Object)
|
|
328
|
+
], QuickOpenTask.prototype, "preferences", void 0);
|
|
329
|
+
__decorate([
|
|
330
|
+
(0, inversify_1.inject)(browser_1.LabelProvider),
|
|
331
|
+
__metadata("design:type", browser_1.LabelProvider)
|
|
332
|
+
], QuickOpenTask.prototype, "labelProvider", void 0);
|
|
333
|
+
QuickOpenTask = QuickOpenTask_1 = __decorate([
|
|
334
|
+
(0, inversify_1.injectable)()
|
|
335
|
+
], QuickOpenTask);
|
|
336
|
+
exports.QuickOpenTask = QuickOpenTask;
|
|
337
|
+
class TaskRunQuickOpenItem {
|
|
338
|
+
constructor(token, task, taskService, isMulti, taskDefinitionRegistry, taskNameResolver, taskSourceResolver, taskConfigurationManager, buttons) {
|
|
339
|
+
this.token = token;
|
|
340
|
+
this.task = task;
|
|
341
|
+
this.taskService = taskService;
|
|
342
|
+
this.isMulti = isMulti;
|
|
343
|
+
this.taskDefinitionRegistry = taskDefinitionRegistry;
|
|
344
|
+
this.taskNameResolver = taskNameResolver;
|
|
345
|
+
this.taskSourceResolver = taskSourceResolver;
|
|
346
|
+
this.taskConfigurationManager = taskConfigurationManager;
|
|
347
|
+
this.buttons = buttons;
|
|
348
|
+
}
|
|
349
|
+
get label() {
|
|
350
|
+
return this.taskNameResolver.resolve(this.task);
|
|
351
|
+
}
|
|
352
|
+
get description() {
|
|
353
|
+
return renderScope(this.task._scope, this.isMulti);
|
|
354
|
+
}
|
|
355
|
+
get detail() {
|
|
356
|
+
return this.task.detail;
|
|
357
|
+
}
|
|
358
|
+
execute() {
|
|
359
|
+
const scope = this.task._scope;
|
|
360
|
+
if (this.taskDefinitionRegistry && !!this.taskDefinitionRegistry.getDefinition(this.task)) {
|
|
361
|
+
this.taskService.run(this.token, this.task.source || this.task._source, this.task.label, scope);
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
this.taskService.run(this.token, this.task._source, this.task.label, scope);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
trigger() {
|
|
368
|
+
this.taskService.configure(this.token, this.task);
|
|
369
|
+
return pickerQuickAccess_1.TriggerAction.CLOSE_PICKER;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
exports.TaskRunQuickOpenItem = TaskRunQuickOpenItem;
|
|
373
|
+
class ConfigureBuildOrTestTaskQuickOpenItem extends TaskRunQuickOpenItem {
|
|
374
|
+
constructor(token, task, taskService, isMulti, taskNameResolver, isBuildTask, taskConfigurationManager, taskDefinitionRegistry, taskSourceResolver) {
|
|
375
|
+
super(token, task, taskService, isMulti, taskDefinitionRegistry, taskNameResolver, taskSourceResolver, taskConfigurationManager);
|
|
376
|
+
this.isBuildTask = isBuildTask;
|
|
377
|
+
}
|
|
378
|
+
execute() {
|
|
379
|
+
this.taskService.updateTaskConfiguration(this.token, this.task, { group: { kind: this.isBuildTask ? 'build' : 'test', isDefault: true } })
|
|
380
|
+
.then(() => {
|
|
381
|
+
if (this.task._scope) {
|
|
382
|
+
this.taskConfigurationManager.openConfiguration(this.task._scope);
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
exports.ConfigureBuildOrTestTaskQuickOpenItem = ConfigureBuildOrTestTaskQuickOpenItem;
|
|
388
|
+
function renderScope(scope, isMulti) {
|
|
389
|
+
if (typeof scope === 'string') {
|
|
390
|
+
if (isMulti) {
|
|
391
|
+
return new uri_1.default(scope).displayName;
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
return '';
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
return task_protocol_1.TaskScope[scope];
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
class TaskConfigureQuickOpenItem {
|
|
402
|
+
constructor(token, task, taskService, taskNameResolver, workspaceService, isMulti) {
|
|
403
|
+
this.token = token;
|
|
404
|
+
this.task = task;
|
|
405
|
+
this.taskService = taskService;
|
|
406
|
+
this.taskNameResolver = taskNameResolver;
|
|
407
|
+
this.workspaceService = workspaceService;
|
|
408
|
+
this.isMulti = isMulti;
|
|
409
|
+
const stat = this.workspaceService.workspace;
|
|
410
|
+
this.isMulti = stat ? !stat.isDirectory : false;
|
|
411
|
+
}
|
|
412
|
+
get label() {
|
|
413
|
+
return this.taskNameResolver.resolve(this.task);
|
|
414
|
+
}
|
|
415
|
+
get description() {
|
|
416
|
+
return renderScope(this.task._scope, this.isMulti);
|
|
417
|
+
}
|
|
418
|
+
accept() {
|
|
419
|
+
this.execute();
|
|
420
|
+
}
|
|
421
|
+
execute() {
|
|
422
|
+
this.taskService.configure(this.token, this.task);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
exports.TaskConfigureQuickOpenItem = TaskConfigureQuickOpenItem;
|
|
426
|
+
let TaskTerminateQuickOpen = class TaskTerminateQuickOpen {
|
|
427
|
+
async getItems() {
|
|
428
|
+
const items = [];
|
|
429
|
+
const runningTasks = await this.taskService.getRunningTasks();
|
|
430
|
+
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
431
|
+
if (runningTasks.length <= 0) {
|
|
432
|
+
items.push(({
|
|
433
|
+
label: 'No task is currently running',
|
|
434
|
+
}));
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
runningTasks.forEach((task) => {
|
|
438
|
+
items.push(new RunningTaskQuickOpenItem(task, this.taskService, this.taskNameResolver, this.taskSourceResolver, this.taskDefinitionRegistry, this.labelProvider, isMulti, () => this.taskService.kill(task.taskId)));
|
|
439
|
+
});
|
|
440
|
+
if (runningTasks.length > 1) {
|
|
441
|
+
items.push(({
|
|
442
|
+
label: 'All running tasks',
|
|
443
|
+
execute: () => {
|
|
444
|
+
runningTasks.forEach((t) => {
|
|
445
|
+
this.taskService.kill(t.taskId);
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
}));
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
return items;
|
|
452
|
+
}
|
|
453
|
+
async open() {
|
|
454
|
+
var _a;
|
|
455
|
+
const items = await this.getItems();
|
|
456
|
+
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(items, { placeholder: 'Select task to terminate' });
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
__decorate([
|
|
460
|
+
(0, inversify_1.inject)(browser_1.LabelProvider),
|
|
461
|
+
__metadata("design:type", browser_1.LabelProvider)
|
|
462
|
+
], TaskTerminateQuickOpen.prototype, "labelProvider", void 0);
|
|
463
|
+
__decorate([
|
|
464
|
+
(0, inversify_1.inject)(browser_1.QuickInputService),
|
|
465
|
+
(0, inversify_1.optional)(),
|
|
466
|
+
__metadata("design:type", Object)
|
|
467
|
+
], TaskTerminateQuickOpen.prototype, "quickInputService", void 0);
|
|
468
|
+
__decorate([
|
|
469
|
+
(0, inversify_1.inject)(task_definition_registry_1.TaskDefinitionRegistry),
|
|
470
|
+
__metadata("design:type", task_definition_registry_1.TaskDefinitionRegistry)
|
|
471
|
+
], TaskTerminateQuickOpen.prototype, "taskDefinitionRegistry", void 0);
|
|
472
|
+
__decorate([
|
|
473
|
+
(0, inversify_1.inject)(task_name_resolver_1.TaskNameResolver),
|
|
474
|
+
__metadata("design:type", task_name_resolver_1.TaskNameResolver)
|
|
475
|
+
], TaskTerminateQuickOpen.prototype, "taskNameResolver", void 0);
|
|
476
|
+
__decorate([
|
|
477
|
+
(0, inversify_1.inject)(task_source_resolver_1.TaskSourceResolver),
|
|
478
|
+
__metadata("design:type", task_source_resolver_1.TaskSourceResolver)
|
|
479
|
+
], TaskTerminateQuickOpen.prototype, "taskSourceResolver", void 0);
|
|
480
|
+
__decorate([
|
|
481
|
+
(0, inversify_1.inject)(task_service_1.TaskService),
|
|
482
|
+
__metadata("design:type", task_service_1.TaskService)
|
|
483
|
+
], TaskTerminateQuickOpen.prototype, "taskService", void 0);
|
|
484
|
+
__decorate([
|
|
485
|
+
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
486
|
+
__metadata("design:type", browser_2.WorkspaceService)
|
|
487
|
+
], TaskTerminateQuickOpen.prototype, "workspaceService", void 0);
|
|
488
|
+
TaskTerminateQuickOpen = __decorate([
|
|
489
|
+
(0, inversify_1.injectable)()
|
|
490
|
+
], TaskTerminateQuickOpen);
|
|
491
|
+
exports.TaskTerminateQuickOpen = TaskTerminateQuickOpen;
|
|
492
|
+
let TaskRunningQuickOpen = class TaskRunningQuickOpen {
|
|
493
|
+
async getItems() {
|
|
494
|
+
const items = [];
|
|
495
|
+
const runningTasks = await this.taskService.getRunningTasks();
|
|
496
|
+
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
497
|
+
if (runningTasks.length <= 0) {
|
|
498
|
+
items.push(({
|
|
499
|
+
label: 'No task is currently running',
|
|
500
|
+
}));
|
|
501
|
+
}
|
|
502
|
+
else {
|
|
503
|
+
runningTasks.forEach((task) => {
|
|
504
|
+
items.push(new RunningTaskQuickOpenItem(task, this.taskService, this.taskNameResolver, this.taskSourceResolver, this.taskDefinitionRegistry, this.labelProvider, isMulti, () => {
|
|
505
|
+
if (task.terminalId) {
|
|
506
|
+
const terminal = this.terminalService.getByTerminalId(task.terminalId);
|
|
507
|
+
if (terminal) {
|
|
508
|
+
this.terminalService.open(terminal);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}));
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
return items;
|
|
515
|
+
}
|
|
516
|
+
async open() {
|
|
517
|
+
var _a;
|
|
518
|
+
const items = await this.getItems();
|
|
519
|
+
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(items, { placeholder: 'Select the task to show its output' });
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
__decorate([
|
|
523
|
+
(0, inversify_1.inject)(browser_1.LabelProvider),
|
|
524
|
+
__metadata("design:type", browser_1.LabelProvider)
|
|
525
|
+
], TaskRunningQuickOpen.prototype, "labelProvider", void 0);
|
|
526
|
+
__decorate([
|
|
527
|
+
(0, inversify_1.inject)(browser_1.QuickInputService),
|
|
528
|
+
(0, inversify_1.optional)(),
|
|
529
|
+
__metadata("design:type", Object)
|
|
530
|
+
], TaskRunningQuickOpen.prototype, "quickInputService", void 0);
|
|
531
|
+
__decorate([
|
|
532
|
+
(0, inversify_1.inject)(task_definition_registry_1.TaskDefinitionRegistry),
|
|
533
|
+
__metadata("design:type", task_definition_registry_1.TaskDefinitionRegistry)
|
|
534
|
+
], TaskRunningQuickOpen.prototype, "taskDefinitionRegistry", void 0);
|
|
535
|
+
__decorate([
|
|
536
|
+
(0, inversify_1.inject)(task_name_resolver_1.TaskNameResolver),
|
|
537
|
+
__metadata("design:type", task_name_resolver_1.TaskNameResolver)
|
|
538
|
+
], TaskRunningQuickOpen.prototype, "taskNameResolver", void 0);
|
|
539
|
+
__decorate([
|
|
540
|
+
(0, inversify_1.inject)(task_source_resolver_1.TaskSourceResolver),
|
|
541
|
+
__metadata("design:type", task_source_resolver_1.TaskSourceResolver)
|
|
542
|
+
], TaskRunningQuickOpen.prototype, "taskSourceResolver", void 0);
|
|
543
|
+
__decorate([
|
|
544
|
+
(0, inversify_1.inject)(task_service_1.TaskService),
|
|
545
|
+
__metadata("design:type", task_service_1.TaskService)
|
|
546
|
+
], TaskRunningQuickOpen.prototype, "taskService", void 0);
|
|
547
|
+
__decorate([
|
|
548
|
+
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
549
|
+
__metadata("design:type", browser_2.WorkspaceService)
|
|
550
|
+
], TaskRunningQuickOpen.prototype, "workspaceService", void 0);
|
|
551
|
+
__decorate([
|
|
552
|
+
(0, inversify_1.inject)(terminal_service_1.TerminalService),
|
|
553
|
+
__metadata("design:type", Object)
|
|
554
|
+
], TaskRunningQuickOpen.prototype, "terminalService", void 0);
|
|
555
|
+
TaskRunningQuickOpen = __decorate([
|
|
556
|
+
(0, inversify_1.injectable)()
|
|
557
|
+
], TaskRunningQuickOpen);
|
|
558
|
+
exports.TaskRunningQuickOpen = TaskRunningQuickOpen;
|
|
559
|
+
class RunningTaskQuickOpenItem {
|
|
560
|
+
constructor(taskInfo, taskService, taskNameResolver, taskSourceResolver, taskDefinitionRegistry, labelProvider, isMulti, execute) {
|
|
561
|
+
this.taskInfo = taskInfo;
|
|
562
|
+
this.taskService = taskService;
|
|
563
|
+
this.taskNameResolver = taskNameResolver;
|
|
564
|
+
this.taskSourceResolver = taskSourceResolver;
|
|
565
|
+
this.taskDefinitionRegistry = taskDefinitionRegistry;
|
|
566
|
+
this.labelProvider = labelProvider;
|
|
567
|
+
this.isMulti = isMulti;
|
|
568
|
+
this.execute = execute;
|
|
569
|
+
}
|
|
570
|
+
get label() {
|
|
571
|
+
return this.taskNameResolver.resolve(this.taskInfo.config);
|
|
572
|
+
}
|
|
573
|
+
get description() {
|
|
574
|
+
return renderScope(this.taskInfo.config._scope, this.isMulti);
|
|
575
|
+
}
|
|
576
|
+
get detail() {
|
|
577
|
+
return this.taskInfo.config.detail;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
exports.RunningTaskQuickOpenItem = RunningTaskQuickOpenItem;
|
|
581
|
+
let TaskRestartRunningQuickOpen = class TaskRestartRunningQuickOpen {
|
|
582
|
+
async getItems() {
|
|
583
|
+
const items = [];
|
|
584
|
+
const runningTasks = await this.taskService.getRunningTasks();
|
|
585
|
+
const isMulti = this.workspaceService.isMultiRootWorkspaceOpened;
|
|
586
|
+
if (runningTasks.length <= 0) {
|
|
587
|
+
items.push({
|
|
588
|
+
label: 'No task to restart'
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
else {
|
|
592
|
+
runningTasks.forEach((task) => {
|
|
593
|
+
items.push(new RunningTaskQuickOpenItem(task, this.taskService, this.taskNameResolver, this.taskSourceResolver, this.taskDefinitionRegistry, this.labelProvider, isMulti, () => this.taskService.restartTask(task)));
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
return items;
|
|
597
|
+
}
|
|
598
|
+
async open() {
|
|
599
|
+
var _a;
|
|
600
|
+
const items = await this.getItems();
|
|
601
|
+
(_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(items, { placeholder: 'Select task to restart' });
|
|
602
|
+
}
|
|
603
|
+
};
|
|
604
|
+
__decorate([
|
|
605
|
+
(0, inversify_1.inject)(browser_1.LabelProvider),
|
|
606
|
+
__metadata("design:type", browser_1.LabelProvider)
|
|
607
|
+
], TaskRestartRunningQuickOpen.prototype, "labelProvider", void 0);
|
|
608
|
+
__decorate([
|
|
609
|
+
(0, inversify_1.inject)(browser_1.QuickInputService),
|
|
610
|
+
(0, inversify_1.optional)(),
|
|
611
|
+
__metadata("design:type", Object)
|
|
612
|
+
], TaskRestartRunningQuickOpen.prototype, "quickInputService", void 0);
|
|
613
|
+
__decorate([
|
|
614
|
+
(0, inversify_1.inject)(task_definition_registry_1.TaskDefinitionRegistry),
|
|
615
|
+
__metadata("design:type", task_definition_registry_1.TaskDefinitionRegistry)
|
|
616
|
+
], TaskRestartRunningQuickOpen.prototype, "taskDefinitionRegistry", void 0);
|
|
617
|
+
__decorate([
|
|
618
|
+
(0, inversify_1.inject)(task_name_resolver_1.TaskNameResolver),
|
|
619
|
+
__metadata("design:type", task_name_resolver_1.TaskNameResolver)
|
|
620
|
+
], TaskRestartRunningQuickOpen.prototype, "taskNameResolver", void 0);
|
|
621
|
+
__decorate([
|
|
622
|
+
(0, inversify_1.inject)(task_source_resolver_1.TaskSourceResolver),
|
|
623
|
+
__metadata("design:type", task_source_resolver_1.TaskSourceResolver)
|
|
624
|
+
], TaskRestartRunningQuickOpen.prototype, "taskSourceResolver", void 0);
|
|
625
|
+
__decorate([
|
|
626
|
+
(0, inversify_1.inject)(task_service_1.TaskService),
|
|
627
|
+
__metadata("design:type", task_service_1.TaskService)
|
|
628
|
+
], TaskRestartRunningQuickOpen.prototype, "taskService", void 0);
|
|
629
|
+
__decorate([
|
|
630
|
+
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
631
|
+
__metadata("design:type", browser_2.WorkspaceService)
|
|
632
|
+
], TaskRestartRunningQuickOpen.prototype, "workspaceService", void 0);
|
|
633
|
+
TaskRestartRunningQuickOpen = __decorate([
|
|
634
|
+
(0, inversify_1.injectable)()
|
|
635
|
+
], TaskRestartRunningQuickOpen);
|
|
636
|
+
exports.TaskRestartRunningQuickOpen = TaskRestartRunningQuickOpen;
|
|
637
637
|
//# sourceMappingURL=quick-open-task.js.map
|