feat: Automatically rename duplicate task names with additional relative path (#1265)

This commit is contained in:
Shi Chen 2022-08-26 11:04:54 +08:00 коммит произвёл GitHub
Родитель e527910c7c
Коммит 16c7a16b87
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 22 добавлений и 0 удалений

Просмотреть файл

@ -1,4 +1,5 @@
import * as vscode from "vscode";
import * as path from "path";
import { parseArgsStringToArgv } from "string-argv";
import { GradleProject, GradleTask } from "../proto/gradle_pb";
import { TaskArgs } from "../stores/types";
@ -278,6 +279,27 @@ export async function loadTasksForProjectRoots(
}
}
}
// detect duplicate task names
const tasksMap: Map<string, vscode.Task[]> = new Map();
for (const task of allTasks) {
if (tasksMap.has(task.name)) {
tasksMap.get(task.name)!.push(task);
} else {
tasksMap.set(task.name, [task]);
}
}
// rename duplicate task names with additional relative path
for (const tasks of tasksMap.values()) {
if (tasks.length !== 1) {
for (const task of tasks) {
const definition = task.definition as GradleTaskDefinition;
const relativePath = path.relative(definition.workspaceFolder, definition.projectFolder);
if (relativePath) {
task.name = task.name + ` (${relativePath})`;
}
}
}
}
return allTasks;
}