@theia/task 1.45.0 → 1.46.0-next.72
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/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 +101 -101
- package/lib/browser/provided-task-configurations.d.ts +43 -43
- package/lib/browser/provided-task-configurations.js +213 -213
- 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 +144 -144
- package/lib/browser/quick-open-task.d.ts.map +1 -1
- package/lib/browser/quick-open-task.js +752 -748
- package/lib/browser/quick-open-task.js.map +1 -1
- 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 +486 -486
- package/lib/browser/task-contribution.d.ts +182 -182
- package/lib/browser/task-contribution.js +206 -206
- package/lib/browser/task-definition-registry.d.ts +38 -38
- package/lib/browser/task-definition-registry.js +134 -134
- 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 +358 -358
- 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 +67 -67
- 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 +309 -309
- package/lib/browser/task-problem-pattern-registry.d.ts +23 -23
- package/lib/browser/task-problem-pattern-registry.js +210 -210
- package/lib/browser/task-schema-updater.d.ts +58 -58
- package/lib/browser/task-schema-updater.js +688 -688
- package/lib/browser/task-service.d.ts +279 -279
- 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 +228 -228
- 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 +4 -4
- package/lib/common/index.js +31 -31
- 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 +192 -192
- package/lib/common/task-protocol.js +137 -137
- package/lib/common/task-util.d.ts +22 -22
- package/lib/common/task-util.js +46 -46
- 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 +355 -355
- package/lib/node/process/process-task.d.ts +26 -26
- package/lib/node/process/process-task.js +135 -135
- 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 +273 -273
- 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 +14 -14
- 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 +213 -213
- package/src/browser/quick-open-task.ts +831 -827
- 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 +508 -508
- package/src/browser/task-contribution.ts +266 -266
- package/src/browser/task-definition-registry.spec.ts +203 -203
- package/src/browser/task-definition-registry.ts +131 -131
- package/src/browser/task-frontend-contribution.ts +402 -402
- 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 +196 -196
- package/src/browser/task-schema-updater.ts +701 -701
- package/src/browser/task-service.ts +1164 -1164
- 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 +224 -224
- package/src/browser/tasks-monaco-contribution.ts +27 -27
- package/src/common/index.ts +20 -20
- package/src/common/problem-matcher-protocol.ts +234 -234
- package/src/common/process/task-protocol.ts +97 -97
- package/src/common/task-common-module.ts +34 -34
- package/src/common/task-protocol.ts +317 -317
- package/src/common/task-util.ts +43 -43
- 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 +144 -144
- package/src/node/task-abstract-line-matcher.ts +312 -312
- 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,131 +1,131 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2019 Ericsson and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
import { injectable } from '@theia/core/shared/inversify';
|
|
18
|
-
import { JSONExt } from '@theia/core/shared/@phosphor/coreutils';
|
|
19
|
-
import { Event, Emitter } from '@theia/core/lib/common';
|
|
20
|
-
import { TaskConfiguration, TaskDefinition, TaskCustomization } from '../common';
|
|
21
|
-
import { Disposable } from '@theia/core/lib/common/disposable';
|
|
22
|
-
|
|
23
|
-
@injectable()
|
|
24
|
-
export class TaskDefinitionRegistry {
|
|
25
|
-
|
|
26
|
-
// task type - array of task definitions
|
|
27
|
-
private definitions: Map<string, TaskDefinition[]> = new Map();
|
|
28
|
-
|
|
29
|
-
protected readonly onDidRegisterTaskDefinitionEmitter = new Emitter<void>();
|
|
30
|
-
get onDidRegisterTaskDefinition(): Event<void> {
|
|
31
|
-
return this.onDidRegisterTaskDefinitionEmitter.event;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
protected readonly onDidUnregisterTaskDefinitionEmitter = new Emitter<void>();
|
|
35
|
-
get onDidUnregisterTaskDefinition(): Event<void> {
|
|
36
|
-
return this.onDidUnregisterTaskDefinitionEmitter.event;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Returns all task definitions that are registered
|
|
41
|
-
* @return the task definitions that are registered
|
|
42
|
-
*/
|
|
43
|
-
getAll(): TaskDefinition[] {
|
|
44
|
-
const all: TaskDefinition[] = [];
|
|
45
|
-
for (const definitions of this.definitions.values()) {
|
|
46
|
-
all.push(...definitions);
|
|
47
|
-
}
|
|
48
|
-
return all;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Finds the task definition(s) from the registry with the given `taskType`.
|
|
53
|
-
*
|
|
54
|
-
* @param taskType the type of the task
|
|
55
|
-
* @return an array of the task definitions. If no task definitions are found, an empty array is returned.
|
|
56
|
-
*/
|
|
57
|
-
getDefinitions(taskType: string): TaskDefinition[] {
|
|
58
|
-
return this.definitions.get(taskType) || [];
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Finds the task definition from the registry for the task configuration.
|
|
63
|
-
* The task configuration is considered as a "match" to the task definition if it has all the `required` properties.
|
|
64
|
-
* In case that more than one task definition is found, return the one that has the biggest number of matched properties.
|
|
65
|
-
*
|
|
66
|
-
* @param taskConfiguration the task configuration
|
|
67
|
-
* @return the task definition for the task configuration. If the task definition is not found, `undefined` is returned.
|
|
68
|
-
*/
|
|
69
|
-
getDefinition(taskConfiguration: TaskConfiguration | TaskCustomization): TaskDefinition | undefined {
|
|
70
|
-
const definitions = this.getDefinitions(taskConfiguration.type);
|
|
71
|
-
let matchedDefinition: TaskDefinition | undefined;
|
|
72
|
-
let highest = -1;
|
|
73
|
-
for (const def of definitions) {
|
|
74
|
-
const required = def.properties.required || [];
|
|
75
|
-
if (!required.every(requiredProp => taskConfiguration[requiredProp] !== undefined)) {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
let score = required.length; // number of required properties
|
|
79
|
-
const requiredProps = new Set(required);
|
|
80
|
-
// number of optional properties
|
|
81
|
-
score += def.properties.all.filter(p => !requiredProps.has(p) && taskConfiguration[p] !== undefined).length;
|
|
82
|
-
if (score > highest) {
|
|
83
|
-
highest = score;
|
|
84
|
-
matchedDefinition = def;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return matchedDefinition;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Add a task definition to the registry.
|
|
92
|
-
*
|
|
93
|
-
* @param definition the task definition to be added.
|
|
94
|
-
*/
|
|
95
|
-
register(definition: TaskDefinition): Disposable {
|
|
96
|
-
const taskType = definition.taskType;
|
|
97
|
-
const definitions = this.definitions.get(taskType) || [];
|
|
98
|
-
definitions.push(definition);
|
|
99
|
-
this.definitions.set(taskType, definitions);
|
|
100
|
-
this.onDidRegisterTaskDefinitionEmitter.fire(undefined);
|
|
101
|
-
return Disposable.create(() => {
|
|
102
|
-
const index = definitions.indexOf(definition);
|
|
103
|
-
if (index !== -1) {
|
|
104
|
-
definitions.splice(index, 1);
|
|
105
|
-
}
|
|
106
|
-
this.onDidUnregisterTaskDefinitionEmitter.fire(undefined);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
compareTasks(one: TaskConfiguration | TaskCustomization, other: TaskConfiguration | TaskCustomization): boolean {
|
|
111
|
-
const oneType = one.type;
|
|
112
|
-
const otherType = other.type;
|
|
113
|
-
if (oneType !== otherType) {
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
if (one['taskType'] !== other['taskType']) {
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
const def = this.getDefinition(one);
|
|
120
|
-
if (def) {
|
|
121
|
-
// scope is either a string or an enum value. Anyway...they must exactly match
|
|
122
|
-
// "_scope" may hold the Uri to the associated workspace whereas
|
|
123
|
-
// "scope" reflects the original TaskConfigurationScope as provided by plugins,
|
|
124
|
-
// Matching "_scope" or "scope" are both accepted in order to correlate provided task
|
|
125
|
-
// configurations (e.g. TaskScope.Workspace) against already configured tasks.
|
|
126
|
-
return def.properties.all.every(p => p === 'type' || JSONExt.deepEqual(one[p], other[p]))
|
|
127
|
-
&& (one._scope === other._scope || one.scope === other.scope);
|
|
128
|
-
}
|
|
129
|
-
return one.label === other.label && one._source === other._source;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2019 Ericsson and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { injectable } from '@theia/core/shared/inversify';
|
|
18
|
+
import { JSONExt } from '@theia/core/shared/@phosphor/coreutils';
|
|
19
|
+
import { Event, Emitter } from '@theia/core/lib/common';
|
|
20
|
+
import { TaskConfiguration, TaskDefinition, TaskCustomization } from '../common';
|
|
21
|
+
import { Disposable } from '@theia/core/lib/common/disposable';
|
|
22
|
+
|
|
23
|
+
@injectable()
|
|
24
|
+
export class TaskDefinitionRegistry {
|
|
25
|
+
|
|
26
|
+
// task type - array of task definitions
|
|
27
|
+
private definitions: Map<string, TaskDefinition[]> = new Map();
|
|
28
|
+
|
|
29
|
+
protected readonly onDidRegisterTaskDefinitionEmitter = new Emitter<void>();
|
|
30
|
+
get onDidRegisterTaskDefinition(): Event<void> {
|
|
31
|
+
return this.onDidRegisterTaskDefinitionEmitter.event;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
protected readonly onDidUnregisterTaskDefinitionEmitter = new Emitter<void>();
|
|
35
|
+
get onDidUnregisterTaskDefinition(): Event<void> {
|
|
36
|
+
return this.onDidUnregisterTaskDefinitionEmitter.event;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Returns all task definitions that are registered
|
|
41
|
+
* @return the task definitions that are registered
|
|
42
|
+
*/
|
|
43
|
+
getAll(): TaskDefinition[] {
|
|
44
|
+
const all: TaskDefinition[] = [];
|
|
45
|
+
for (const definitions of this.definitions.values()) {
|
|
46
|
+
all.push(...definitions);
|
|
47
|
+
}
|
|
48
|
+
return all;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Finds the task definition(s) from the registry with the given `taskType`.
|
|
53
|
+
*
|
|
54
|
+
* @param taskType the type of the task
|
|
55
|
+
* @return an array of the task definitions. If no task definitions are found, an empty array is returned.
|
|
56
|
+
*/
|
|
57
|
+
getDefinitions(taskType: string): TaskDefinition[] {
|
|
58
|
+
return this.definitions.get(taskType) || [];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Finds the task definition from the registry for the task configuration.
|
|
63
|
+
* The task configuration is considered as a "match" to the task definition if it has all the `required` properties.
|
|
64
|
+
* In case that more than one task definition is found, return the one that has the biggest number of matched properties.
|
|
65
|
+
*
|
|
66
|
+
* @param taskConfiguration the task configuration
|
|
67
|
+
* @return the task definition for the task configuration. If the task definition is not found, `undefined` is returned.
|
|
68
|
+
*/
|
|
69
|
+
getDefinition(taskConfiguration: TaskConfiguration | TaskCustomization): TaskDefinition | undefined {
|
|
70
|
+
const definitions = this.getDefinitions(taskConfiguration.type);
|
|
71
|
+
let matchedDefinition: TaskDefinition | undefined;
|
|
72
|
+
let highest = -1;
|
|
73
|
+
for (const def of definitions) {
|
|
74
|
+
const required = def.properties.required || [];
|
|
75
|
+
if (!required.every(requiredProp => taskConfiguration[requiredProp] !== undefined)) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
let score = required.length; // number of required properties
|
|
79
|
+
const requiredProps = new Set(required);
|
|
80
|
+
// number of optional properties
|
|
81
|
+
score += def.properties.all.filter(p => !requiredProps.has(p) && taskConfiguration[p] !== undefined).length;
|
|
82
|
+
if (score > highest) {
|
|
83
|
+
highest = score;
|
|
84
|
+
matchedDefinition = def;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return matchedDefinition;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Add a task definition to the registry.
|
|
92
|
+
*
|
|
93
|
+
* @param definition the task definition to be added.
|
|
94
|
+
*/
|
|
95
|
+
register(definition: TaskDefinition): Disposable {
|
|
96
|
+
const taskType = definition.taskType;
|
|
97
|
+
const definitions = this.definitions.get(taskType) || [];
|
|
98
|
+
definitions.push(definition);
|
|
99
|
+
this.definitions.set(taskType, definitions);
|
|
100
|
+
this.onDidRegisterTaskDefinitionEmitter.fire(undefined);
|
|
101
|
+
return Disposable.create(() => {
|
|
102
|
+
const index = definitions.indexOf(definition);
|
|
103
|
+
if (index !== -1) {
|
|
104
|
+
definitions.splice(index, 1);
|
|
105
|
+
}
|
|
106
|
+
this.onDidUnregisterTaskDefinitionEmitter.fire(undefined);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
compareTasks(one: TaskConfiguration | TaskCustomization, other: TaskConfiguration | TaskCustomization): boolean {
|
|
111
|
+
const oneType = one.type;
|
|
112
|
+
const otherType = other.type;
|
|
113
|
+
if (oneType !== otherType) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
if (one['taskType'] !== other['taskType']) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const def = this.getDefinition(one);
|
|
120
|
+
if (def) {
|
|
121
|
+
// scope is either a string or an enum value. Anyway...they must exactly match
|
|
122
|
+
// "_scope" may hold the Uri to the associated workspace whereas
|
|
123
|
+
// "scope" reflects the original TaskConfigurationScope as provided by plugins,
|
|
124
|
+
// Matching "_scope" or "scope" are both accepted in order to correlate provided task
|
|
125
|
+
// configurations (e.g. TaskScope.Workspace) against already configured tasks.
|
|
126
|
+
return def.properties.all.every(p => p === 'type' || JSONExt.deepEqual(one[p], other[p]))
|
|
127
|
+
&& (one._scope === other._scope || one.scope === other.scope);
|
|
128
|
+
}
|
|
129
|
+
return one.label === other.label && one._source === other._source;
|
|
130
|
+
}
|
|
131
|
+
}
|