Skip to content

Commit 2097916

Browse files
authored
Merge pull request #48 from badsyntax/extension-conflict-2
Change task definition for better extension support
2 parents ece1b94 + f52f62f commit 2097916

File tree

4 files changed

+27
-31
lines changed

4 files changed

+27
-31
lines changed

package.json

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -162,21 +162,17 @@
162162
{
163163
"type": "gradle",
164164
"required": [
165-
"task",
166-
"buildFile"
165+
"script",
166+
"fileName"
167167
],
168168
"properties": {
169-
"task": {
169+
"script": {
170170
"type": "string",
171-
"description": "Gradle task name"
171+
"description": "The task script name"
172172
},
173-
"buildFile": {
173+
"fileName": {
174174
"type": "string",
175-
"description": "The build file that provides the task"
176-
},
177-
"subProjectBuildFile": {
178-
"type": "string",
179-
"description": "The subproject build file that provides the task"
175+
"description": "The filename of the build file that provides the tasks"
180176
}
181177
}
182178
}

src/gradleView.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -248,13 +248,13 @@ export class GradleTasksTreeDataProvider
248248
buildFileTreeItem = new GradleBuildFileTreeItem(
249249
workspaceTreeItem,
250250
relativePath,
251-
definition.buildFile
251+
definition.fileName
252252
);
253253
workspaceTreeItem.addGradleBuildFileTreeItem(buildFileTreeItem);
254254
buildFileTreeItems.set(fullPath, buildFileTreeItem);
255255
}
256-
if (showNestedSubProjects && definition.subProjectBuildFile) {
257-
const [subProjectName] = task.definition.task.split(':');
256+
if (showNestedSubProjects && definition.script.includes(':')) {
257+
const [subProjectName] = definition.script.split(':');
258258
let subProjectTreeItem = subProjectTreeItems.get(subProjectName);
259259
if (!subProjectTreeItem) {
260260
subProjectTreeItem = new SubProjectTreeItem(
@@ -272,7 +272,7 @@ export class GradleTasksTreeDataProvider
272272
subProjectBuildFileTreeItem = new GradleBuildFileTreeItem(
273273
workspaceTreeItem,
274274
relativePath,
275-
path.basename(definition.subProjectBuildFile)
275+
definition.fileName
276276
);
277277
subProjectTreeItem.addGradleBuildFileTreeItem(
278278
subProjectBuildFileTreeItem

src/tasks.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ export function enableTaskDetection() {
1717
}
1818

1919
export interface GradleTaskDefinition extends vscode.TaskDefinition {
20-
task: string;
21-
buildFile: string;
22-
subProjectBuildFile: string | undefined;
20+
script: string;
21+
fileName: string;
2322
}
2423

2524
export class GradleTaskProvider implements vscode.TaskProvider {
@@ -43,7 +42,7 @@ export class GradleTaskProvider implements vscode.TaskProvider {
4342
public async resolveTask(
4443
_task: vscode.Task
4544
): Promise<vscode.Task | undefined> {
46-
const gradleTask = (<any>_task.definition).task;
45+
const gradleTask = (<any>_task.definition).script;
4746
if (gradleTask) {
4847
const { definition } = <any>_task;
4948
let gradleBuildFileUri: vscode.Uri;
@@ -68,7 +67,7 @@ export class GradleTaskProvider implements vscode.TaskProvider {
6867
if (folder) {
6968
return createTask(
7069
definition,
71-
definition.task,
70+
definition.script,
7271
_task.scope,
7372
gradleBuildFileUri,
7473
await getGradleWrapperCommandFromPath(folder.uri.fsPath)
@@ -215,21 +214,19 @@ export async function createTask(
215214
command: string
216215
): Promise<vscode.Task> {
217216
let definition: GradleTaskDefinition;
217+
let fileName: string = path.basename(gradleBuildFileUri.fsPath);
218218
if (typeof taskDefinitionOrTaskName === 'string') {
219-
let subProjectBuildFile: string | undefined = undefined;
220219
if (taskDefinitionOrTaskName.includes(':')) {
221220
const [subProjectName] = taskDefinitionOrTaskName.split(':');
222221
const subProjectPath = path.join(folder.uri.fsPath, subProjectName);
223222
const folderUri = vscode.Uri.file(subProjectPath);
224-
const buildFile = (await getBuildFilePaths(folderUri))[0];
225-
subProjectBuildFile = buildFile.fsPath;
223+
const uri = (await getBuildFilePaths(folderUri))[0];
224+
fileName = path.basename(uri.fsPath);
226225
}
227-
228226
definition = {
229227
type: 'gradle',
230-
task: taskDefinitionOrTaskName,
231-
buildFile: path.basename(gradleBuildFileUri.fsPath),
232-
subProjectBuildFile
228+
script: taskDefinitionOrTaskName,
229+
fileName
233230
};
234231
} else {
235232
definition = taskDefinitionOrTaskName;
@@ -259,7 +256,10 @@ export async function createTask(
259256
if (relativeBuildGradle.length) {
260257
definition.path = relativeBuildGradle;
261258
}
262-
const normalizedTaskName = getTaskName(definition.task, relativeBuildGradle);
259+
const normalizedTaskName = getTaskName(
260+
definition.script,
261+
relativeBuildGradle
262+
);
263263
const cwd = path.dirname(gradleBuildFileUri.fsPath);
264264
const task = new vscode.Task(
265265
definition,
@@ -274,7 +274,7 @@ export async function createTask(
274274
showReuseMessage: false,
275275
focus: true
276276
};
277-
return task;
277+
return Object.freeze(task);
278278
}
279279

280280
export async function hasGradleBuildFile(): Promise<boolean> {

src/test/multi-root/extension.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe(fixtureName, () => {
3232
);
3333
assert.ok(groovyDefaultTask);
3434
if (groovyDefaultTask) {
35-
assert.equal(groovyDefaultTask.definition.buildFile, 'build.gradle');
35+
assert.equal(groovyDefaultTask.definition.fileName, 'build.gradle');
3636
}
3737
});
3838

@@ -42,7 +42,7 @@ describe(fixtureName, () => {
4242
);
4343
assert.ok(kotlinTask);
4444
if (kotlinTask) {
45-
assert.equal(kotlinTask.definition.buildFile, 'build.gradle.kts');
45+
assert.equal(kotlinTask.definition.fileName, 'build.gradle.kts');
4646
}
4747
});
4848

@@ -53,7 +53,7 @@ describe(fixtureName, () => {
5353
assert.ok(groovyCustomTask);
5454
if (groovyCustomTask) {
5555
assert.equal(
56-
groovyCustomTask.definition.buildFile,
56+
groovyCustomTask.definition.fileName,
5757
'my-custom-build.gradle'
5858
);
5959
}

0 commit comments

Comments
 (0)